A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 37°天黑 中级黑马   /  2015-4-9 22:24  /  1559 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a,b;
a=a++;
b=++b;
printf("%d,%d"a,b);
这里的b输出是2.我能理解,但是a的输出值不应该是1么?为何会是2?

17 个回复

倒序浏览
a 和b好像没有初始化吧
回复 使用道具 举报
a先操作后加1,b先加1后操作
回复 使用道具 举报
最简单的理解法,++在后面就数先赋值再++,    ++在前面就数先++再赋值
+在前就先+,   +在后就后+,多好理解
回复 使用道具 举报
楼主,你的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:20
地板
报错吧,++这个符号,在语句结束后+1,你说a++这个语句结束了么?
回复 使用道具 举报
落羽 中级黑马 2015-4-10 08:10:45
7#
输出结果啥都不是  都没初始化
回复 使用道具 举报
没有初始化。
回复 使用道具 举报
流风124 发表于 2015-4-10 07:26
楼主,你的a,b变量在使用前没有初始化,结果根本就不对,结果应该是a = 0;b = 1;
下面是初始化后的代码,楼 ...

谢谢啦,我发现了!
回复 使用道具 举报
郝聚德 发表于 2015-4-9 22:59
a 和b好像没有初始化吧

哦哦,是的,谢谢啦
回复 使用道具 举报
流风124 发表于 2015-4-10 07:26
楼主,你的a,b变量在使用前没有初始化,结果根本就不对,结果应该是a = 0;b = 1;
下面是初始化后的代码,楼 ...

问一下,你写的这个代码块是什么东西写出来的啊?
回复 使用道具 举报
一个是先用再赋值,一个是先赋值再用      
回复 使用道具 举报
没给赋值,, 怎么知道你这个啊。。。。
回复 使用道具 举报
你这个没用初始化啊
回复 使用道具 举报
你这个没用初始化,并且结果也不对
回复 使用道具 举报
郁永鹏 发表于 2015-4-10 07:31
报错吧,++这个符号,在语句结束后+1,你说a++这个语句结束了么?

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

哦哦,知道了,多谢大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马