[问题] 印出什么

楼主: 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