黑马程序员技术交流社区

标题: x++和!x++的区别? [打印本页]

作者: zx413331474    时间: 2014-12-24 20:21
标题: x++和!x++的区别?
这两个有什么区别啊

作者: sweet凌风    时间: 2014-12-24 20:32
一个是先加后再运算,另一个是先运算后加
作者: joykerl    时间: 2014-12-24 20:56
:L:L:L:L:L:L:L:L:L
作者: zx413331474    时间: 2014-12-24 22:25
初始化int x = 0;分析两个结果?

作者: 从今以后    时间: 2014-12-24 22:36
x++;
返回x,然后 x += 1;
!x++;
等价于!(x++);,返回x,值为0,!0 = 1,x+=1, x值最后变为1。
作者: zx413331474    时间: 2014-12-25 00:34
x++;
返回x,然后 x += 1;
你的思路x++后返回x的值为x = 1;不是x + = 1吧,x + = 1后,x = 2;
!x++;
等价于!(x++);,返回x,值为0,!0 = 1,x+=1, x值最后变为1。
等价于!(x++);返回x,因为x为0,所以!x即为1,再x+=1不就等于2了?想不通啊

作者: miaopf123    时间: 2014-12-25 07:35
1.     b=a++;   //  是  先把a赋值给b  即b=a; 然后再执行 a=a+1;
2.     b=++a;    //   是 先a=a+1;然后b=a;
作者: miaopf123    时间: 2014-12-25 07:40
zx413331474 发表于 2014-12-24 22:25
初始化int x = 0;分析两个结果?

你得看  x++或者  ++x  前面是不是还有运算符  ;如果只是单纯的 x++ 或者++x   每执行一次就是自增1;
如果前面有的话例如  b=x++;  运行的结果则是b=0;x=1;  而b=++x;  运行的结果则是 b=1;x=1.   明白了吗?
作者: zx413331474    时间: 2014-12-25 14:14
我问的是x++和!x++的区别,不是x++和++x的区别!
int x = 0;
int y = 0;
y = !x++;
x = x++;
printf(“%d,%d”,x, y);
分析结果





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2