【发布时间】:2020-01-10 16:44:04
【问题描述】:
所以在我的期末考试中,有一个练习询问程序将打印什么。
这是代码:
#include <stdio.h>
int main (){
int x=5, y=4;
if (x>y);
printf("A");
if(x=4)
printf("%d",x+y);
return 0;
}
当我尝试在 Debian 机器上使用 gcc -ansi -pedantic -Werror 编译它时,它编译得很好并输出“A8”。
但是,当我尝试使用 clang -ansi -pedantic -Werror 编译它时,我收到关于 if (x=4) 表达式缺少 = 和缺少 if(x>y); 上的语句的错误。
为什么会发生这种情况,哪个答案可以被标记为正确?
【问题讨论】:
-
=与==不是同一个运算符。 -
是的,我明白了。我不明白为什么它在 GCC 中编译而在 clang 中没有。
-
显然
gcc相信你知道自己在做什么,而clang不知道:) -
if (x>y); printf("A");等于if (x>y) { /* empty block */ } printf("A"); -
gcc -Wall -Wextra -Wpedantic有什么不同吗?