当前位置: 代码迷 >> C语言 >> 有关宏的问题
  详细解决方案

有关宏的问题

热度:46   发布时间:2007-03-13 13:10:45.0
有关宏的问题
下列程序段运行后的结果:
#define PR(x,y,z) printf("%d\t%d\t%d\n",x,y,z)
main()
{int x,y,z;
x=(9+6)%5>=9%5+6%5;
printf("%d,n",x);
z=x? (y=x) : (y=++x);
PR (x,y,z);
}

x的值我可以这样算:“(9+6)%5>=9%5+6%5”不成立,所以x的值为0,但PR(x,y,z)的值我不知道怎么弄了,哪位帮助并详细给解释下,谢谢了!
----------------解决方案--------------------------------------------------------
PR(x,y,z)不更改你的任何值,它只是把3个变量的值按制表位输出
z=『x? (y=x) : (y=++x)』;
『』内是条件表达式,这么分 是因为“?:”的优先级大于“=”
x=0,所以执行y=++x;即y=1;同时x自增为1
z的值是表达式y=++x的值,z=1
输出x,y,z都为1
over
----------------解决方案--------------------------------------------------------
  相关解决方案