作业帮 > 综合 > 作业

#define PR(x,y,z) printf("%d\t%d\t%d\n",x,y,z) main() { int

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/05/15 02:15:05
#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
#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);
}
#define PR(x,y,z) printf(
宏是在编译前处理的,也就是编译预处理.
他是简单的做替换.替换完后再编译.
比如你的程序
首先它把源代码替换成
main()
{
int x,y,z;
x=(9+6)%5>=9%5+6%5;
printf("%d\n",x);
z=x?(y=x):(y=++x);
printf("%d\t%d\t%d\n",x,y,z);
}
然后开始编译.
再问: z=x?(y=x):(y=++x);这一段是什么意思呢,麻烦啦
再答: 如果x非0,那z = (y=x) 否则 z=(y=++x)
再问: z = (y=x) 和z=(y=++x)的运算量是多少呢
再答: (y=x)实际上就是x或y。 z=(y=x)是先将x赋给y,然后y再赋给z,因为括号内的优先运算。 同样 z=(y=++x) ++优先于=所以先是x加一,再赋给y,然后在赋给z