以下代码如何输出3? (以下代码如何阅读?)

时间:2015-04-10 01:44:48

标签: c++11 if-statement int signed

我不理解的具体部分是if语句中的-a如何将-3更改为3.有人可以解释-a如何将a = -3更改为a = 3

#include <iostream>

int main(){

signed a = -3;

if (a < 0){ std::cout << -a << std::endl; }
else { std::cout << a << std::endl; }

system("pause");
return 0;
}

2 个答案:

答案 0 :(得分:2)

这是unary negative的示例,当a=-3(小于0时,代码会进入if块),然后{{1 } -a-(-3)

答案 1 :(得分:0)

此代码根本不会更改“a”的值。即使执行if语句,它仍将保持3(a = 3)。您可以通过添加

来检查这一点
 std::cout << a << std::endl;
你的if语句中的

。系统只打印-1 * a的值,即(-a)