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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fengjiequlada 初级黑马   /  2015-11-5 00:14  /  1243 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

main()
{
int y=3,x=3,z=1;
printf("%d%d\n",(++x,++y),z+2);
}
输出结果为什么是'3,3'呢
逗号表达式要求是以第N个表达式的值为准,那么
(++x,++y)的值为4,但与答案矛盾吧!

9 个回复

正序浏览
不错...................
回复 使用道具 举报
fenxite 发表于 2015-11-5 00:18
答案是++y和z+2的值吧,应该是这样,你不信可以修改一下数值看看检验一下,好象是压栈的原理,先进后出,z+2最后 ...

还可以,看看还是有用的
回复 使用道具 举报
wkop 中级黑马 2015-11-9 23:51:56
8#
我感觉答案应该是4,3。主要考察逗号表达式与自增运算:1:逗号表达式的值取括号里最后一个表达式的值;2、++y,y先自增再被使用。个人见解,若疑议共同讨论
回复 使用道具 举报
你好,我在c.free上运行结果为4  3。4为++y的值 3为z+2的值  逗号是输出最右边的
(++x,++y)  这叫逗号表达式,里面含2个表达式,表达式的最终值用最后一个表达式的结果。逗号表达式的最终值 用最后一个表达式的结果, 就是4。z+2的值为3.
回复 使用道具 举报
结果是4,3,这个你应该算错了
回复 使用道具 举报
你用Xcode运行下  答案是4,3
回复 使用道具 举报
运行结果错啦,是43
回复 使用道具 举报
运算里有(a,b)这种运算么?
回复 使用道具 举报
答案是++y和z+2的值吧,应该是这样,你不信可以修改一下数值看看检验一下,好象是压栈的原理,先进后出,z+2最后进去,输出反而在前面.

评分

参与人数 1黑马币 +9 收起 理由
fengjiequlada + 9 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马