黑马程序员技术交流社区

标题: C语言问题 [打印本页]

作者: darewolf    时间: 2015-3-18 11:06
标题: C语言问题
有如下问题:
代码片段:
int a=4;
printf("%d,%d",a++,a);
输出多少?
我一开始毫不犹豫的说出:4,5
但别人说他的那个系统中输出:4,4
求解决?
作者: a380vs747`    时间: 2015-3-18 13:33
我这里的c编程系统也是输出4,4,但是在xcode运行就是4,5了。我的c编程系统上试了一下,打印a=a+1,a也是5,4.
说明在printf里俩逗号之间的a++只是给结果,并没有改变内存中a的值。但是xcode就改变了。
不同的编程软件可能不一样吧。
作者: xsun    时间: 2015-3-18 13:50
从逻辑上来说应该是4,5没错。
作者: 枫宇翔    时间: 2015-3-18 14:15
4,5吧,就是这个额逻辑啊
作者: wzboy    时间: 2015-3-18 14:49
沙发 说的对, 我刚才 在Xcode下试了一下 是4,5
在C-Free下试了一下 是4,4;
作者: still过客    时间: 2015-3-18 17:23
首先语句是以分号结束的,c语言执行的时候是逐句执行的,所以,printf执行完成之后,才执行a++
作者: 舒少勇    时间: 2015-3-18 19:08
输出4 和5是正确的  因为你执行了a++ 操作 所以再输出a的值的时候 就是加1之后的值
作者: darewolf    时间: 2015-3-18 21:51
a380vs747` 发表于 2015-3-18 13:33
我这里的c编程系统也是输出4,4,但是在xcode运行就是4,5了。我的c编程系统上试了一下,打印a=a+1,a也是5,4 ...

谢谢!你用的是什么编译器,我用g++和gcc都输出的是4,5,我今天也看了一博客,讲的挺深的,
作者: darewolf    时间: 2015-3-18 21:52
xsun 发表于 2015-3-18 13:50
从逻辑上来说应该是4,5没错。

嗯,编译器不同结果就不同喔
作者: darewolf    时间: 2015-3-18 21:53
谢谢各位的回答,就不逐一谢啦,
作者: 碧空海    时间: 2015-3-20 08:46
不同的编译器 处理起来不同 按照C语言逻辑来  就行了
作者: youga    时间: 2015-3-20 09:02
应该是 4, 5,因为先开始a++(4)然后给%d赋值,完了之后a==5,再给第二个%d赋值。等于两步运算,别的那个应该输出方式不一样。
作者: sydie    时间: 2015-3-20 09:54
1L正解。Xcode会按逻辑增加。
作者: 沐浴阳光@    时间: 2015-3-20 17:09
应该是编译器的问题,按照思想上来说应该是4和5!
作者: 安若宸king    时间: 2015-3-20 17:12
4跟5应该是对的才对呀




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