標(biāo)題:
C語(yǔ)言if語(yǔ)句執(zhí)行問(wèn)題
[打印本頁(yè)]
作者:
xnysfh
時(shí)間:
2023-6-30 15:01
標(biāo)題:
C語(yǔ)言if語(yǔ)句執(zhí)行問(wèn)題
void Reset()
{
num1 = 0;
num2 = 0;
step = 0;
LcdFullClear();
}
/* 數(shù)字鍵動(dòng)作函數(shù),n-按鍵輸入的數(shù)值 */
void NumKeyAction(unsigned char n)
{
unsigned char len;
unsigned char str[12];
if (step > 1) //如計(jì)算已完成,則重新開(kāi)始新的計(jì)算
{
Reset();
}
if (step == 0) //輸入第一操作數(shù)
{
num1 = num1*10 + n; //輸入數(shù)值累加到原操作數(shù)上
len = LongToString(str, num1); //新數(shù)值轉(zhuǎn)換為字符串
LcdShowStr(16-len, 1, str); //顯示到液晶第二行上
}
else //輸入第二操作數(shù)
{
num2 = num2*10 + n; //輸入數(shù)值累加到原操作數(shù)上
len = LongToString(str, num2); //新數(shù)值轉(zhuǎn)換為字符串
LcdShowStr(16-len, 1, str); //顯示到液晶第二行上
}
}
問(wèn):執(zhí)行完
if (step > 1)
{
Reset();
}
之后要直接執(zhí)行
if (step == 0)
{
num1 = num1*10 + n;
len = LongToString(str, num1);
LcdShowStr(16-len, 1, str);
}
這個(gè)if嗎
作者:
lkc8210
時(shí)間:
2023-6-30 17:55
會(huì)直接執(zhí)行if (step == 0)
因?yàn)閟tep在Reset()里清零了
可以改為
else if (step == 0)
作者:
飛云居士
時(shí)間:
2023-6-30 17:57
是的,執(zhí)行完step>1,表示第一個(gè)if語(yǔ)句執(zhí)行完了,按語(yǔ)句執(zhí)行順序,緊接著執(zhí)行step==0的if語(yǔ)句。第二個(gè)if應(yīng)改成else if。
作者:
13205495918
時(shí)間:
2023-6-30 20:12
yes,會(huì)繼續(xù)執(zhí)行的
reset函數(shù)把變量清零了,如果想構(gòu)成分支語(yǔ)句,需要寫(xiě)成if else或者if elseif else形式
作者:
Aurelion
時(shí)間:
2023-7-1 15:38
會(huì)執(zhí)行的,沒(méi)有else形成分支,只是進(jìn)行了if判斷,會(huì)繼續(xù)按順序執(zhí)行語(yǔ)句
作者:
chxelc
時(shí)間:
2023-7-1 16:22
2L正解,Reset里面將step置0了,故if (step == 0) 為真。
作者:
dwping
時(shí)間:
2023-7-1 21:11
是的,當(dāng) step 大于 1 時(shí),會(huì)執(zhí)行 Reset() 函數(shù)重置變量的值。然后程序會(huì)繼續(xù)執(zhí)行下一個(gè) if 語(yǔ)句 if (step == 0)。這個(gè) if 語(yǔ)句用于判斷是否輸入第一個(gè)操作數(shù),如果條件滿足,會(huì)執(zhí)行相應(yīng)的操作,包括更新 num1 的值、將其轉(zhuǎn)換為字符串并在液晶屏上顯示出來(lái)。所以在執(zhí)行完 Reset() 后,會(huì)直接執(zhí)行下一個(gè) if 語(yǔ)句。
作者:
TTQ001
時(shí)間:
2023-7-1 22:38
執(zhí)行 if (step > 1) {
重置();
}
后
程序檢查step是否=0,因?yàn)閞eset()置step = 0,所以它執(zhí)行第二個(gè)if語(yǔ)句。
作者:
黑白AS
時(shí)間:
2023-7-1 23:02
是的,當(dāng)執(zhí)行完`if (step > 1)`中的代碼塊,如果條件滿足,則會(huì)執(zhí)行`Reset()`函數(shù)。然后程序會(huì)繼續(xù)向下執(zhí)行,直接進(jìn)入下一個(gè)`if (step == 0)`的代碼塊。 如果`if (step == 0)`條件滿足,那么會(huì)執(zhí)行花括號(hào)內(nèi)的代碼,即將`num1`乘以10加上`n`,然后計(jì)算`num1`轉(zhuǎn)換為字符串后的長(zhǎng)度存儲(chǔ)到`len`變量中,并將這個(gè)字符串以適當(dāng)?shù)奈恢蔑@示在Lcd上。 這兩個(gè)if語(yǔ)句是獨(dú)立的,執(zhí)行一個(gè)不會(huì)影響到另一個(gè)。當(dāng)?shù)谝粋(gè)if條件判斷不滿足時(shí),第一個(gè)if塊中的代碼將被忽略,程序直接跳過(guò)它繼續(xù)向下執(zhí)行。只有在第一個(gè)if條件判斷滿足時(shí),才會(huì)執(zhí)行第一個(gè)if塊中的代碼,并且會(huì)在執(zhí)行完后直接進(jìn)入第二個(gè)if塊中的代碼。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1