我在 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;
}
当我用gcc -Wall ctest.c
(或 g++)编译代码时,我得到以下输出:
ctest.c: In function `int main()':
ctest.c:5 warning: statement has no effect
printf
运行此程序时语句的输出是1.200000
. 因此,该语句确实似乎对 的值没有影响foo
。
什么是*-
运营商?即使语句没有效果,该语法编译是否有充分的理由?