注册 登录
编程论坛 C语言论坛

[求助]x= -i++ 这个表达式的值究竟是怎么算出来的????

黄265 发布于 2022-08-17 09:36, 1110 次点击
当i=8时,算到的结果是x=-9,i=10
这个最终i的值是如何算出来的?
3 回复
#2
不会游泳的虾2022-08-17 09:44
供参考:
程序代码:
#include <stdio.h>
int main()
{
    int x, i = 8;
    x = -i++;//这句分解为:x = -i, i++; x = -8,i = 9
    printf("x=%d, i=%d", x, i);
    return 0;
}
//x=-8, i=9
#3
rjsp2022-08-17 10:12
首先贴完整代码
程序代码:
#include <stdio.h>

int main( void )
{
    int i = 8;
    int x = -i++;
    printf( "i==%d, i==%d\n", i, x );
}


对于 x = -i++; 查询 https://zh. 可知:= 优先级最低,而 - 与 ++ 优先级一样,结合性是 从右到左
所以 int x = -i++; 被解析成 int x = -(i++);

再查 https://zh. 可知:后缀自增的评估值结果是i的值,副作用是 加相应类型的值1到运算数i,即 i++ 的值为8,副作用是i变为9
那么最终结果就是 x=-8, i=9
#4
chenyucheng2022-08-17 14:43
先++再用数字前面的-变负数。
++在变量后,变量加一,返回原数。
结果是x = -8, i = 9
1