自增(减)运算与正负号

发布时间:2024-05-16 15:34 发布:上海旅游网

问题描述:

main(){

int i=8;

printf("%d\n",++i);

printf("%d\n",--i);

printf("%d\n",i++);

printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);

}

9
8
8
9
-8
-9

不明白最后的-8 -9怎么来的
其他都知道了……

总之就是自增自减遇到负号就不知道怎么算了

那位大大帮帮忙……
感激不尽……

问题解答:

记住在这里:自减和自加要打印完再自加自减!
printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);
执行第一句话时i=9,打印完i再减1,所以执行第二句就是打印-8,这里i再++,就是i=9,执行第三句就是打印-9,i再--,就是i到程序结束之前是8.

你需要知道,后自增操作符优先级非常高,高于前自增操作符和一般的算数运算符。
这样,就是-(i++) 明白了吧~

自增运算符与自增减运算符的优先级都高于一元负号的优先级

所以-i++就相当于是-(i++),即是对i先后自增,然后取它的相反数

printf("%d\n",i--); 这条语句,使得i变为了8,所以执行

printf("%d\n",-i++); 时,先执行i++,i++的值是8,取反,则为-8.后面的同理

但是你要明白,自增是有副作用的,因为i++之后,i的值变为了9,但是i++的值是8

只要记住:前缀加返回自加之后的值,后缀加返回自加之前的值

热点新闻