3

考虑 64 位

#include<stdio.h>

int main()

{

    unsigned a=0xffffffff;

    a=~a;

    printf("%u\n",a);

    printf("%x\n",+  +  a);
    return 0;

}
OUTPUT:
0
0

服用 ~a 后,a 现在为 0。但在语句“++ a”中。“a”不增加为什么?空间在这里重要还是什么? 我要求输出解释?

4

2 回答 2

7

+ + a被解析为+应用了两次的一元运算符,所以值保持不变。

+(+a)是编译器看到的,在这种情况下只是 0

于 2013-06-18T20:56:09.150 回答
6

我认为这两个加号都在这里充当一元运算符。“因为 + 和 - 都可以充当一元运算符。”,所以这里对“a”没有影响。它仍然为 0。

如果 ++a; 那么这是前缀增量运算符,“a”将变为 1。

于 2013-06-18T20:56:19.607 回答