[課業] 91年普考計概

看板Examination作者 (小楊)時間9年前 (2016/12/13 16:14), 編輯推噓0(0011)
留言11則, 5人參與, 最新討論串1/1
下列C程式會印出何值? #include<stdio.h> void main(void){ int n=0; if(n=0)n=1; else if(n=1)n=2; else if(n=2)n=3; else if(n=3)n=4; printf("%d\n",n); } 請教各位資訊前輩 小弟認為此題答案應該為1 因n一開始被指派為0 而在if的第一個條件式if(n=0)也符合 照理來說應該不會在執行下方程式 但答案卻是2 不知是哪裡沒有想清楚 還請各位資訊前輩教導 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.140.22 ※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1481616882.A.6F4.html

12/13 16:21, , 1F
你認為? 去查書吧,程式都有規則的。別自以為是了
12/13 16:21, 1F

12/13 16:21, , 2F
= 和 == 的問題
12/13 16:21, 2F

12/13 16:21, , 3F
這題跟蔡XX C語言範本的題目一模一樣
12/13 16:21, 3F

12/13 16:50, , 4F

12/13 16:55, , 5F
因為 if (n=0) 不符合,其他也都不符合,就直接 else n=2
12/13 16:55, 5F

12/13 16:56, , 6F
2樓說對了,if 要用 == 的布林來判斷。
12/13 16:56, 6F

12/13 16:58, , 7F
感謝各位高手指教
12/13 16:58, 7F

12/13 17:05, , 8F
比較詳細的說法是 if(n=0)表示0指定給n所以if的條件
12/13 17:05, 8F

12/13 17:06, , 9F
判斷變成if(0)為false 所以跑到下一行else if(n=1)
12/13 17:06, 9F

12/13 17:07, , 10F
等同於判斷 if(1)為true 所以程式執行n=2; 結果為2
12/13 17:07, 10F

12/13 17:20, , 11F
謝謝i大詳細解說
12/13 17:20, 11F
文章代碼(AID): #1OJwtoRq (Examination)