看板 C_and_CPP 關於我們 聯絡資訊
要先知道兩件事情。 第一件事:先看一下以下的程式 if (0) printf("never print\n"); else if (1) printf("1"); else if (2) printf("2"); 對C語言來說,if(括號裡面的這裡) 如果放的是 0, 那麼就是 false, 也就是不成立,不會執行之後的動作 如果放的是非 0, 0 以外的任何值,那就是 true, 成立,會執行之後的動作 第二件事: int i; printf("%d\n", i = 10); 這個時候 printf 會印出 10 因為用單一等號「=」的時候,除了右邊的值會複製到左邊 另外也會再回傳同樣的值 : #include<stdio.h> : void main(void){ : int n=0; : if(n=0) n=1; 結合以上兩件事情, if (n = 0) 可以拆成兩個動作: (1) n = 0 並且回傳 0 (2) if (0) <== 上面的第一件事,得到 false,因此會跑下去 else if : else if(n=1) n=2; 同樣 else if (n = 1) 做的事情 (1) n = 1 並且回傳 1 (2) else if (1) 得到 true,因此會執行 n = 2; : else if(n=2) n=3; : else if(n=3) n=4; if ... else if ... else if ... else ... 只會執行遇到的第一個 true, 之後就會略過了 因此 n = 3 與 n = 4 根本不會執行 : printf("%d\n",n); : } 這個時候的 n 自然就等於 2 -- ps. 用「回傳」這個詞好像有點怪怪的 ps2. 我幹嘛這麼認真.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46 ※ 編輯: james732 來自: 140.117.171.46 (10/19 15:28)
kai5566:感謝您!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 10/19 15:31
kai5566:我代表5566全體同仁跟您道謝!!! 我愛妳!!! 10/19 15:31
kai5566:儒果你想加入56天團 我絕對歡迎~~~~~~~~~ 10/19 15:32
james732:不知道為什麼一點都不覺得開心 ╮(﹀_﹀")╭ 10/19 15:32
clarkman:XDDDDDDDDDDD 10/19 15:33
lwecloud:lol 你是個好人 10/19 15:46
BlazarArc:XDDDDDDDDDDDDDD 10/19 21:26
azaz12345:YA~~~~~5566 10/19 23:49
cutewing:解釋的很清楚!長知識了,謝謝 10/20 01:31
ilemon:沒錯,你得到他了,推好人 10/20 02:08