Re: [問題] 判斷式if括號內的"=" and "= ="

看板C_and_CPP作者 (好人超)時間15年前 (2010/10/19 15:25), 編輯推噓6(604)
留言10則, 8人參與, 最新討論串2/2 (看更多)
要先知道兩件事情。 第一件事:先看一下以下的程式 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)

10/19 15:31, , 1F
感謝您!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10/19 15:31, 1F

10/19 15:31, , 2F
我代表5566全體同仁跟您道謝!!! 我愛妳!!!
10/19 15:31, 2F

10/19 15:32, , 3F
儒果你想加入56天團 我絕對歡迎~~~~~~~~~
10/19 15:32, 3F

10/19 15:32, , 4F
不知道為什麼一點都不覺得開心 ╮(﹀_﹀")╭
10/19 15:32, 4F

10/19 15:33, , 5F
XDDDDDDDDDDD
10/19 15:33, 5F

10/19 15:46, , 6F
lol 你是個好人
10/19 15:46, 6F

10/19 21:26, , 7F
XDDDDDDDDDDDDDD
10/19 21:26, 7F

10/19 23:49, , 8F
YA~~~~~5566
10/19 23:49, 8F

10/20 01:31, , 9F
解釋的很清楚!長知識了,謝謝
10/20 01:31, 9F

10/20 02:08, , 10F
沒錯,你得到他了,推好人
10/20 02:08, 10F
文章代碼(AID): #1ClKVqGM (C_and_CPP)
文章代碼(AID): #1ClKVqGM (C_and_CPP)