黑马程序员技术交流社区

标题: 自增自减问题 [打印本页]

作者: 张成智    时间: 2013-5-27 22:18
标题: 自增自减问题
本帖最后由 张成智 于 2013-5-29 22:04 编辑

int a=5;
a++;
Console.WriteLine(a);
a的值为6;
int a=5;
int b=a++ +3;
b的值为8;
此时a++的值为5;
为什么单独的a++和算数表达式里的a++的值不同?
作者: qiumanlover    时间: 2013-5-27 22:28
你可以在b之后再输出a的值,这个事运算符优先级问题,头疼的时候就加括号
作者: SOAR    时间: 2013-5-27 22:56
int a=5;
a++;//先使用a然后在自加
Console.WriteLine(a);//你如果写在这里面的话 那输出的就是5了
a的值为6;
int a=5;
int b=a++ +3;//使用a之后在自加 你现在打印a  a就是6了

作者: Xi_SHENG:    时间: 2013-5-27 23:14
int a=5;
a++; //后++的意思是先运算后++,首先a=5,然后a+1,所以结果a=6,a++相当于 a = a + 1;
Console.WriteLine(a);
a的值为6;
int a=5;
int b=a++ +3;//同理先运算,b = a +3,再 a++,结果b=8,a=6
b的值为8;
此时a++的值为5;
希望能够帮到你。

QQ图片20130527231246.jpg (16.52 KB, 下载次数: 0)

QQ图片20130527231246.jpg

作者: 葛杨杨    时间: 2013-5-28 05:47
  1. int a=5;
  2. int b=a++ +3; // "++"号写在后面的时候, 先进行运算后在给a的值加1

  3. int b=++a +3; //"++"号写在前边, 这样的话就是先给a加1再参与运算 , 这时b的值就是9了
复制代码

作者: 蔡志涛    时间: 2013-5-28 15:09
建议你应该好好的学习一下++a 与a++的区别!
作者: 迟强    时间: 2013-5-28 15:55
A++ 先运算再++
++A 先++再运算
A--  --A 同理
作者: zpzhangwenhan    时间: 2013-5-28 16:23
一种是先加后算   一种是先算后加   应用不同场合
作者: 关关雎鸠    时间: 2013-5-29 15:39
不同的是 单独的a++并没有参与其它的运算,所以结果是6;
而a = 5; b = a++ + 3;这个是a先与3相加,然后a再自己加1。

注意++在后面表示后运算,如果这样写++a + 3是先算a的,再算 + 3。
作者: 张成智    时间: 2013-5-29 16:15
qiumanlover 发表于 2013-5-27 22:28
你可以在b之后再输出a的值,这个事运算符优先级问题,头疼的时候就加括号 ...

谢谢,:lol。
作者: 张成智    时间: 2013-5-29 16:15
SOAR 发表于 2013-5-27 22:56
int a=5;
a++;//先使用a然后在自加
Console.WriteLine(a);//你如果写在这里面的话 那输出的就是5了

谢谢了。
作者: 张成智    时间: 2013-5-29 16:16
Xi_SHENG: 发表于 2013-5-27 23:14
int a=5;
a++; //后++的意思是先运算后++,首先a=5,然后a+1,所以结果a=6,a++相当于 a = a + 1;
Console ...

明白了,谢谢。
作者: 张成智    时间: 2013-5-29 16:16
葛杨杨 发表于 2013-5-28 05:47

谢谢了。
作者: 张成智    时间: 2013-5-29 16:16
sdjngl123 发表于 2013-5-28 11:17
a++是在当前表达式执行完之后才会把值加1
你也可以这么认为,就是当前语句执行到分号(;)后,a的值才进行 ...

谢谢了。
作者: 张成智    时间: 2013-5-29 16:17
蔡志涛 发表于 2013-5-28 15:09
建议你应该好好的学习一下++a 与a++的区别!

谢谢了。
作者: 张成智    时间: 2013-5-29 16:18
迟强 发表于 2013-5-28 15:55
A++ 先运算再++
++A 先++再运算
A--  --A 同理

谢谢了.
作者: 张成智    时间: 2013-5-29 16:18
zpzhangwenhan 发表于 2013-5-28 16:23
一种是先加后算   一种是先算后加   应用不同场合

谢谢了。
作者: 许大虾    时间: 2013-5-29 16:18
打个比方
a++的值为a,然后a再加1
++a的值是先加1,即它的值为a+1
所以说程序是按照步骤来的,如果是a++的话,在那一行代码中,a的值是不变的,下一行才发生变化,++a则是在那一行已经发生了变化
作者: 张成智    时间: 2013-5-29 16:19
关关雎鸠 发表于 2013-5-29 15:39
不同的是 单独的a++并没有参与其它的运算,所以结果是6;
而a = 5; b = a++ + 3;这个是a先与3相加,然后a再 ...

谢谢了。
作者: 袁梦希    时间: 2013-5-30 20:14
Xi_SHENG: 发表于 2013-5-27 23:14
int a=5;
a++; //后++的意思是先运算后++,首先a=5,然后a+1,所以结果a=6,a++相当于 a = a + 1;
Console ...

答得很好,给你两分
作者: 袁梦希    时间: 2013-5-30 20:16
大家加油   以后有事情   或者没加分 给我留言或者看我的个性签名
作者: Xi_SHENG:    时间: 2013-5-30 22:42
袁梦希 发表于 2013-5-30 20:14
答得很好,给你两分

谢谢夸奖了,不过这“给你两分”怎么感觉有微博手哥的感觉。:lol
作者: Sofoul    时间: 2013-5-30 23:36
a++,先运算再自增加1.int a=5;int b=a++ +3;a先运算加3等于8.所以b为8.int a=5;a++;   单独的a++和++a;没啥区别。有其他运算符时++a为先自增再运算。a++是先运算再自增。
作者: a724228803    时间: 2013-5-31 16:02
你好,
在本例中,你两次运算 中  并不是  a++ 在表达式中 和 单独的a++  运算结果有什么不同 。
如果你这样写
int a=5;
a++;
int b=a +3;
结果b=9;

结果之所以不同时因为   在表达式运算时a++ 中 取的是a 在自加前的值即为5,5+3=8;

而 本例中d :
int a=5;
a++;//a已经自加了1即为6
Console.WriteLine(a);
a的值为6;
在输出时:a 的值已经自加了1,自然输出时6了






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