c++:為什么這段代碼會(huì)輸出a而不輸出b,?
程序里的一個(gè)問題研究了好久,,后來簡(jiǎn)化了成了這樣,,過來問問,為什么輸出a而不是輸出b
這個(gè)是一個(gè)初學(xué)者最容易犯的錯(cuò)之一
C++的=是賦值 ,,不是判斷
if (mapk[3][10][1]=1)
是先將mapk[3][10][1]賦為1,,且表達(dá)式結(jié)果就是1,所以會(huì)輸出a
而if (mapk[3][10][1]=0)又將它賦為0,,但因?yàn)楸磉_(dá)式的值是0,,所以不會(huì)輸出b
C++要判斷一個(gè)值 ,要用==的
所以,,要有正確的結(jié)果,,你要用
if (mapk[3][10][1]==1) printf("a");
后面的類同
因?yàn)槟鉯f語(yǔ)句沒有用大括號(hào)包住,如果if語(yǔ)句不用大括號(hào)包住,,則根據(jù)就近原則,,會(huì)執(zhí)行離if最近的那一句語(yǔ)句,所以你這段代碼只輸出a而輸出不是輸出b
相關(guān)推薦
便查問答是一款實(shí)用的網(wǎng)絡(luò)熱門知識(shí)問答平臺(tái),,專注于分享你不知道的知識(shí),、經(jīng)驗(yàn)及生活問題,在這里所有人都能找到答案歡迎網(wǎng)友參與討論,。