我在C程序中输了一个错字,我很困惑为什么编译它,语法的意义是什么.我试图使用乘法赋值运算符*=但不小心输入*-.这是一个例子:
#include <stdio.h>
int main()
{
double foo = 1.2;
foo *- 3.4; /* I meant to type foo *= 3.4; */
printf("%f\n", foo);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我用gcc -Wall ctest.c(或g ++)编译代码时,我得到以下输出:
ctest.c: In function `int main()':
ctest.c:5 warning: statement has no effect
Run Code Online (Sandbox Code Playgroud)
printf运行此程序时语句的输出是1.200000.因此,该陈述确实似乎对价值没有影响foo.
什么是*-运营商?是否有充分的理由为什么语法编译即使语句没有效果?
Fra*_*bot 12
两个运营商
foo * (-3.4);
Run Code Online (Sandbox Code Playgroud)
结果扔掉了.该语句没有左侧,因此编译器可能会完全删除此语句.
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |