C语言中为什么i=-a++和i=-(a++),i和a的值运算结果都是一样的?

2025-03-24 01:41:04
推荐回答(2个)
回答1:

自增/自减运算的优先级比正/负运算高, 所以这两个表达式在运算顺序上是一样的
其次, a++, 自增在后,表达式的值取a的原值, 比如a=3; i=a++; i的值是3,a的值是4
所以你给出的表达式, i结果为-3, a结果为4
也不用太过于追究, 这个东西也不见得永远是对的, 这个跟你使用的编译器有一定关系,知道怎么回事就行了,也就是在学习/考试的时候会出现, 正常人不会用这么别扭的写法

回答2:

i=-(a++)是
a先自己加a变成4
然后a自增之前的值3取负号给i
因为++在后面
i是-3
~~~~~~~~~~~~~~~~~~~~~~~
i=-(++a)
就是a自己加变成4
把增加之后的值4取负号给i
i就是-4