黑马程序员技术交流社区

标题: a++和++a [打印本页]

作者: 37°天黑    时间: 2015-4-9 22:24
标题: a++和++a
int a,b;
a=a++;
b=++b;
printf("%d,%d"a,b);
这里的b输出是2.我能理解,但是a的输出值不应该是1么?为何会是2?
作者: 郝聚德    时间: 2015-4-9 22:59
a 和b好像没有初始化吧
作者: Hello_Java    时间: 2015-4-9 23:05
a先操作后加1,b先加1后操作
作者: 丶浩浩丶    时间: 2015-4-10 00:58
最简单的理解法,++在后面就数先赋值再++,    ++在前面就数先++再赋值
+在前就先+,   +在后就后+,多好理解
作者: 流风124    时间: 2015-4-10 07:26
楼主,你的a,b变量在使用前没有初始化,结果根本就不对,结果应该是a = 0;b = 1;
下面是初始化后的代码,楼主可以试一下

  1. #include <stdio.h>
  2. int main()
  3. {
  4.    
  5.     int a = 0,b = 0;
  6.     a=a++;
  7.     b=++b;
  8.     printf("%d,%d",a,b);
  9.     return 0;
  10. }
复制代码

作者: 郁永鹏    时间: 2015-4-10 07:31
报错吧,++这个符号,在语句结束后+1,你说a++这个语句结束了么?
作者: 落羽    时间: 2015-4-10 08:10
输出结果啥都不是  都没初始化
作者: 15098037606    时间: 2015-4-10 12:38
没有初始化。
作者: 37°天黑    时间: 2015-4-10 21:26
流风124 发表于 2015-4-10 07:26
楼主,你的a,b变量在使用前没有初始化,结果根本就不对,结果应该是a = 0;b = 1;
下面是初始化后的代码,楼 ...

谢谢啦,我发现了!
作者: 37°天黑    时间: 2015-4-10 21:27
郝聚德 发表于 2015-4-9 22:59
a 和b好像没有初始化吧

哦哦,是的,谢谢啦
作者: 37°天黑    时间: 2015-4-10 21:30
流风124 发表于 2015-4-10 07:26
楼主,你的a,b变量在使用前没有初始化,结果根本就不对,结果应该是a = 0;b = 1;
下面是初始化后的代码,楼 ...

问一下,你写的这个代码块是什么东西写出来的啊?
作者: 上古丶    时间: 2015-4-10 21:34
一个是先用再赋值,一个是先赋值再用      

作者: 强颜欢笑i    时间: 2015-4-10 21:41
没给赋值,, 怎么知道你这个啊。。。。
作者: 沐浴阳光@    时间: 2015-4-10 21:44
你这个没用初始化啊
作者: 沐浴阳光@    时间: 2015-4-10 21:49
你这个没用初始化,并且结果也不对
作者: 流风124    时间: 2015-4-11 06:02
郁永鹏 发表于 2015-4-10 07:31
报错吧,++这个符号,在语句结束后+1,你说a++这个语句结束了么?

不报错,如果初始化了,输出的结果也是对的
作者: 流风124    时间: 2015-4-11 06:07
本帖最后由 流风124 于 2015-4-11 06:10 编辑
37°天黑 发表于 2015-4-10 21:30
问一下,你写的这个代码块是什么东西写出来的啊?
上面有个 <> ,可以添加代码文字
作者: 37°天黑    时间: 2015-4-11 21:18
流风124 发表于 2015-4-11 06:07
上面有个  ,可以添加代码文字

哦哦,知道了,多谢大神




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