以下代码如何在C/C++中编译?

San*_*ish 1 c c++ operators

打印以下代码 -10

int x = 10;
-x;
cout << -x << endl;  // printf("%d\n", -x); 
Run Code Online (Sandbox Code Playgroud)

在C和C++编译器中都有(gcc 4.1.2).我期待第二行的编译器错误.可能是一些基本的东西,但我不明白这种行为.有人可以解释一下吗?

谢谢

Man*_*rse 11

陈述可以是表达.这些陈述丢弃表达式的结果,并评估表达式的副作用.

-x;计算否定x并丢弃结果.

有关更多信息,请参阅[stmt.expr]C++标准.