以下代碼的行爲如何?以下代碼的行爲是什麼?
status.channel = 0;
void a(void)
{
status.channel++;
}
void handler(void)
{
if (status.channel == 0) {
// do a
a();
} else {
// do b
}
}
起初status.channel = 0
,該if
聲明是有效的。然後在常規,status.channel
遞增,所以它等於1
我的問題是,當我走出if
聲明,我評價else
:在status.channel
不再是0.這是否意味着,該代碼也運行else
聲明?
一個簡單的C書的搜索將回答這個問題。你做了什麼來自己回答你的問題?爲什麼它不起作用?堆棧溢出不是教程網站。 – Olaf
拿一張紙和一支鉛筆。用句子寫下每行代碼實際說的內容(如果status.channel等於零,調用函數a,這會增加status.channel(它會爲1)else(例如if status.channel不爲零),做b「_)。有什麼不明白的地方? –
並且不贊成使用非原型函數聲明。如果函數不帶參數,則使用'(void)'而不是'()'。因爲你的其他功能已經做到了。不要複製/粘貼各種來源的代碼,而是在使用代碼之前**理解代碼。並使用一致的編碼風格。 – Olaf