0

我在 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

什么是*-运营商?即使语句没有效果,该语法编译是否有充分的理由?

4

1 回答 1

12

两个运算符

foo * (-3.4);

结果扔掉了。该语句没有左侧,因此编译器可能会完全删除该语句。

于 2013-06-19T13:30:22.877 回答