黑马程序员技术交流社区

标题: C语言题的自增++ [打印本页]

作者: fengjiequlada    时间: 2015-11-5 00:14
标题: C语言题的自增++
main()
{
int y=3,x=3,z=1;
printf("%d%d\n",(++x,++y),z+2);
}
输出结果为什么是'3,3'呢
逗号表达式要求是以第N个表达式的值为准,那么
(++x,++y)的值为4,但与答案矛盾吧!

作者: fenxite    时间: 2015-11-5 00:18
答案是++y和z+2的值吧,应该是这样,你不信可以修改一下数值看看检验一下,好象是压栈的原理,先进后出,z+2最后进去,输出反而在前面.
作者: yufang1993    时间: 2015-11-5 00:23
运算里有(a,b)这种运算么?
作者: liulunjiang    时间: 2015-11-5 11:13
运行结果错啦,是43
作者: craneteng    时间: 2015-11-5 11:40
你用Xcode运行下  答案是4,3
作者: 夏夏天阳    时间: 2015-11-8 23:07
结果是4,3,这个你应该算错了
作者: 叶良辰    时间: 2015-11-9 14:28
你好,我在c.free上运行结果为4  3。4为++y的值 3为z+2的值  逗号是输出最右边的
(++x,++y)  这叫逗号表达式,里面含2个表达式,表达式的最终值用最后一个表达式的结果。逗号表达式的最终值 用最后一个表达式的结果, 就是4。z+2的值为3.
作者: wkop    时间: 2015-11-9 23:51
我感觉答案应该是4,3。主要考察逗号表达式与自增运算:1:逗号表达式的值取括号里最后一个表达式的值;2、++y,y先自增再被使用。个人见解,若疑议共同讨论
作者: Tiffany2015    时间: 2015-11-10 00:03
fenxite 发表于 2015-11-5 00:18
答案是++y和z+2的值吧,应该是这样,你不信可以修改一下数值看看检验一下,好象是压栈的原理,先进后出,z+2最后 ...

还可以,看看还是有用的
作者: 马尔代夫的日出    时间: 2015-11-25 22:00
不错...................




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