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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© darewolf 中级黑马   /  2015-3-18 11:06  /  1999 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有如下问题:
代码片段:
int a=4;
printf("%d,%d",a++,a);
输出多少?
我一开始毫不犹豫的说出:4,5
但别人说他的那个系统中输出:4,4
求解决?

14 个回复

倒序浏览
我这里的c编程系统也是输出4,4,但是在xcode运行就是4,5了。我的c编程系统上试了一下,打印a=a+1,a也是5,4.
说明在printf里俩逗号之间的a++只是给结果,并没有改变内存中a的值。但是xcode就改变了。
不同的编程软件可能不一样吧。
回复 使用道具 举报
从逻辑上来说应该是4,5没错。
回复 使用道具 举报
4,5吧,就是这个额逻辑啊
回复 使用道具 举报
沙发 说的对, 我刚才 在Xcode下试了一下 是4,5
在C-Free下试了一下 是4,4;
回复 使用道具 举报
首先语句是以分号结束的,c语言执行的时候是逐句执行的,所以,printf执行完成之后,才执行a++
回复 使用道具 举报
输出4 和5是正确的  因为你执行了a++ 操作 所以再输出a的值的时候 就是加1之后的值
回复 使用道具 举报
a380vs747` 发表于 2015-3-18 13:33
我这里的c编程系统也是输出4,4,但是在xcode运行就是4,5了。我的c编程系统上试了一下,打印a=a+1,a也是5,4 ...

谢谢!你用的是什么编译器,我用g++和gcc都输出的是4,5,我今天也看了一博客,讲的挺深的,
回复 使用道具 举报
xsun 发表于 2015-3-18 13:50
从逻辑上来说应该是4,5没错。

嗯,编译器不同结果就不同喔
回复 使用道具 举报
谢谢各位的回答,就不逐一谢啦,
回复 使用道具 举报
不同的编译器 处理起来不同 按照C语言逻辑来  就行了
回复 使用道具 举报
youga 中级黑马 2015-3-20 09:02:24
12#
应该是 4, 5,因为先开始a++(4)然后给%d赋值,完了之后a==5,再给第二个%d赋值。等于两步运算,别的那个应该输出方式不一样。
回复 使用道具 举报
sydie 中级黑马 2015-3-20 09:54:11
13#
1L正解。Xcode会按逻辑增加。
回复 使用道具 举报
应该是编译器的问题,按照思想上来说应该是4和5!
回复 使用道具 举报
4跟5应该是对的才对呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马