請解釋在每種情況下工作。解釋這個C程序的工作
爲什麼這兩種情況具有相同的輸出?
案例一:
int main (void)
{
int i = 5;
if(i == ++i) //plz explain here How values are checked
printf("Equal");
else
printf("Not Equal");
return 0;
}
//Output: Equal;
案例二:
int main (void)
{
int i = 5;
if(++i == i) //plz explain here How values are checked
printf("Equal");
else
printf("Not Equal");
return 0;
}
//Output: Equal;
但是這兩個程序都正確執行 – 2011-03-14 04:20:01
@Javed Akram:是的 - 未定義行爲的一個可能結果是代碼似乎正常工作,甚至可能產生您期望的結果。再次,它可能不會做任何一個。當然,最常見的結果是,它似乎在測試中運行良好,然後在爲客戶端演示時做了一些可怕的事情。 – 2011-03-14 04:22:57
@Jerry好吧,我不認爲機器代碼會因演示而波動,但請嘗試切換編譯器(即使是簡單的升級也可以做到這一點),看看你什麼時候開始哭泣。 – stefan 2011-03-14 04:24:43