c语言符号++ --的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:24:38
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--);

}

i的初值为8,第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8) ;第6行输出-8之后再加1(为9),第7行输出-9之后再减1(为8)。

问题:6,7行中,为什么负的加1或减1变成了正的?

这是符号优先级的问题!你参考C语言的书可以的到:++或--的优先级要比+或-的优先级高!所以都是先运算++或--,而且还有个问题是各个运算是独立的,只对i而言,不要把-i看做个整体;
具体分析:
第6行:因为++在后面,所以先输出-i(-8),之后做i++,这时i的值为9
第7行:因为--在后面,所以先输出-i(-9),之后做i--,这时i的值为8

提醒!在代码中不要把-i看作个和i一样的常量!-i可以看作个运算!

所以比你问的问题本身就是个错误!不存在负的加1或减1变成了正的;

i++和++i都有i=i+1的意思 其实他们的区别在于通过i的时候是先加1还是先通过在加1

应该自加自减的是i而不是-i

编译器不同结果就会不同
真的

9
8
8
9
-8 (-号不表示 i 变成负数.... i = 8)
-9

++i和i++都有i=i+1的意思,但只是前加和后加的不同
++i是先执行i=i+1;后在使用i;
i++是先是用i值,在执行i=i+1;
比如 i=3;
cout<<++i; 输出: 4
i=i+1=3+1=4;i=4;所以输出4 可以大致认为i=i++或++i (我说的是大致可以 我个人看法)
cout<<i++; 输出: 3
i(也就是++i)=3;在执行i=i+1=4;
如果还是不懂 加我的qq 477411369