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

C++ 为什么*-语法/运算符在C/C+中有效+;?,c++,c,syntax,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; } 运行此程序时,printf语句的输出为1.200000

我在一个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;
}
运行此程序时,
printf
语句的输出为
1.200000
。因此,该语句似乎确实对
foo
的值没有影响

什么是
*-
运算符?即使语句没有效果,语法也会编译,这有什么好的原因吗?

两个运算符

foo * (-3.4);

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

两个运算符,
*
和一元
-
。哇,回答得非常快。谢谢关于堆栈溢出有很多问题:)@dasblinkenlight,但在你得到答案之前,没有办法知道这是一个重复的问题@Markransem好吧,编译器给OP一个很大的提示,带有“没有效果”的信息:)
foo * (-3.4);