为什么* - 语法/运算符在C / C ++中有效?

时间:2013-06-19 13:29:36

标签: c++ c syntax

我在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的价值没有影响。

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

1 个答案:

答案 0 :(得分:12)

两名运营商

foo * (-3.4);

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