[問題] 印出什麼

作者: ooww (另外一個我)   2021-02-05 00:33:08
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
onlineGDB
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
印出問題
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
#include <stdio.h>
int main()
{
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("n = %d", n);
return 0;
}
補充說明(Supplement):
照著課本上的題目寫
課本答案輸出為 1
但是測試後輸出為2
請教另一位中央資工所同學也表示很納悶
他也認為答案是1
跪求版上碼農大大開示 還是課本答案錯了?
(標題不太清楚怎麼描述比較好)
作者: Schottky (順風相送)   2021-02-05 00:38:00
你是不是把 if 判斷式裡面的 == 寫成 = 了
作者: nh60211as   2021-02-05 00:44:00
中央資工所==
作者: Schottky (順風相送)   2021-02-05 00:56:00
請把課本題目拍給我們參詳參詳
作者: poolongkong (普攏貢)   2021-02-05 01:06:00
= 是 assign,== 才是判斷左右兩邊是否相等說不定你同學以為你打錯,自動把 = 轉成 == 了 XD
作者: Schottky (順風相送)   2021-02-05 01:41:00
嗯嗯,這是課本印錯,但與其說是答案錯不如說題目印錯就是 == 印錯變成 = 的問題,請向老師反應這個問題和 main() 的傳回值是 int 或 void 完全無關是的,正解
作者: loveme00835 (髮箍)   2021-02-05 01:51:00
你可以試試加上選項 -Wall -Werror -pedantic-errors連編譯都不會過的東西就不用看了你那個網站沒地方加有點爛, 一般社群分享程式碼都是用 Compiler Explorer https://godbolt.org/z/n66zcT各製化選項較多, 如可用比較熱門的函式庫-Wall -Werror 開下去如果沒辦法編過表示程式碼有缺陷 (defect), 即使你關選項忽略它遲早也是要還的
作者: GTR12534 (カラス)   2021-02-07 00:30:00
assignment 的回傳值bit.ly/assignment-value
作者: kaneson (Lance)   2021-02-09 10:01:00
題目寫=是故意的,寫==是考小學生因為c是少數assign statement仍可取值不會報錯的語言.所以這也是一個找bug的要注意的點。我是覺得課本答案錯了
作者: Lipraxde (Lipraxde)   2021-02-09 10:19:00
印象中看過有一種 coding style 是把 condition 的式子倒過來,例如變成:1 == n。
作者: asdfdsa1024   2021-02-10 19:29:00
看起來是因為第一個if 是賦值0所以判斷式為false 不會進入第一個if 第二個else if 賦值1所以會進入 因此n=2

Links booklink

Contact Us: admin [ a t ] ucptt.com