void num的max和main中的max以及min并不是同一個(gè),main中的max和min都是未初始的值。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供興海網(wǎng)站建設(shè)、興海做網(wǎng)站、興海網(wǎng)站設(shè)計(jì)、興海網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、興海企業(yè)網(wǎng)站模板建站服務(wù),10年興海做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
在double轉(zhuǎn)換成int時(shí),應(yīng)當(dāng)考慮到數(shù)值并不準(zhǔn)確的問題,可以考慮自己要求的精度極限,比如是0.00000001,可以寫成:printf(%d\n,(int)(a/pow(10,b-1)+0.000000005); 這樣可以配合取整實(shí)現(xiàn)在那位上的四舍五入。
它無法準(zhǔn)確表示十進(jìn)制中的大部分小數(shù),就像十進(jìn)制科學(xué)計(jì)數(shù)法不能準(zhǔn)確表示1/3,而只能近似表示成0.3333..一樣。76這個(gè)數(shù)無法準(zhǔn)確地用浮點(diǎn)數(shù)表示,只能近似到75999..或7600000...x。
一般來說,C語言程序被編譯為可執(zhí)行程序后,每次都輸出都是相同的,但有些特殊情況例外,比如,代碼中引入了隨機(jī)變量,并讓它出現(xiàn)在輸出結(jié)果中。
另外,最開始的getchar()是干什么用的?這個(gè)在調(diào)試器和實(shí)際的效果也是不一樣的。因?yàn)檎{(diào)試器執(zhí)行到這句的時(shí)候,你會(huì)給它一個(gè)回車跳過去了。但實(shí)際,你可能直接輸入一個(gè)串,這樣會(huì)吞掉第一個(gè)字符。
因?yàn)槟鉌indMax函數(shù)中,循環(huán)體判斷了誰是最大的,但沒把比較值更新。也就是說你的程序每次比對的都是第一個(gè)score值,找到的自然就是最后一個(gè)比他大的值和序號了。
你的這個(gè)程序,與“字母也能轉(zhuǎn)化為數(shù)字”沒有關(guān)系的。在這個(gè)程序中,(1)變量i定義了卻沒有使用;(2)%i是以整數(shù)的形式輸出變量y的地址。由于每一次系統(tǒng)分配的地址會(huì)有不同,所以會(huì)導(dǎo)致不同時(shí)候運(yùn)行的結(jié)果會(huì)不同。
圖一本來就是正常的,不可能由代碼引起崩潰。崩潰只可能是其他原因引起的。
一般來說,C語言程序被編譯為可執(zhí)行程序后,每次都輸出都是相同的,但有些特殊情況例外,比如,代碼中引入了隨機(jī)變量,并讓它出現(xiàn)在輸出結(jié)果中。
原因是代碼被優(yōu)化、平臺不兼容。代碼被優(yōu)化:編譯器在編譯時(shí)能夠進(jìn)行優(yōu)化操作,導(dǎo)致編譯后的執(zhí)行文件和運(yùn)行的程序不一樣,編譯后的執(zhí)行文件比源代碼更高效。
說明你的代碼中存在不穩(wěn)定因素。比如沒有賦初始值的局部變量。 越界訪問行為等等。這些都是會(huì)導(dǎo)致不可預(yù)知結(jié)果的。具體的 還需要看代碼才能知道原因。
因?yàn)樵蛴卸湟唬耗愕拇a跟別人的代碼不一樣也會(huì)有很大差別,比如你的是a++,別人的是++a。
學(xué)過編譯原理嗎?編譯器的機(jī)制可能不盡相同,導(dǎo)致編譯器對代碼的解讀可能會(huì)不一致,結(jié)果不一致是很正常的事情。