自+与()的优先级问题

[复制链接]
查看11 | 回复3 | 2010-5-14 16:59:22 | 显示全部楼层 |阅读模式
#include "stdio.h"
main()
{int x=1,y=6,z=9;
printf("%d %d \n"(++x,y++),z+2);
}
输出的结果是 6 11
6是(++x,y++)中y的结果(先输出6然后y+1=7)
11是z+2
问题来了,()中的优先级不是 左-> 右 么?
为什么输出的是y++而不是++x呢?
谢谢大家了·~~~
printf("%d %d \n"(++x,y++),z+2); 这行我少了一个逗号“,”~~·
麻烦大家了~·`

回复

使用道具 举报

千问 | 2010-5-14 16:59:22 | 显示全部楼层
其实()里边是一个逗号表达式,这个逗号表达式的值是6.你理解错误了。。。()里的执行是这样的:先执行++x,得x=2,再执行y++,但是因为是y++,所以先是逗号表达式的值是6,再是y=7。如果不知道逗号表达式就翻翻书吧。。。
回复

使用道具 举报

千问 | 2010-5-14 16:59:22 | 显示全部楼层
()不是返回右边的数么?int a = (12,3);print("%d\n",a);//应该输出是3吧
回复

使用道具 举报

千问 | 2010-5-14 16:59:22 | 显示全部楼层
你查一下什么叫逗号表达式 就知道了。括号里的是一个逗号表达式,它的值取最后一个逗号之后的表达式的值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行