c 语言程序解释(帮忙解释一下咯,很简单的语句,但是我还是看不懂啊)

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:57:49
#include<stdio.h>
void main()
{
int y=4,x=6,z=2;
printf("%d %d %d\n",++y,--x,z++);
printf("%d %d\n",(++x,y++),z+2);
}
为什么运行结果为:
5 5 2
5 5
啊?

你主要是把下面这些东西弄清楚:
++i;--i (在使用i之前,先使i的值加1;减1)
i++;i--(在使用i之后, 使i的值加1;减1)

所以,经过第一个printf后,x=5,y=5,z=3

逗号表达式 (表达式1,表达式2,,,表达式n)的值为表达式n的值
像题中(++x,y++)的值就是y++,y的值仍为5

因为C语言由右向左计算。
z++表示先用z,然后再给z+1,所以是2;
++y,--x表示先做运算,然后用y和x,所以是5,5;
第一个printf后y=5,x=5,z=3;
第2个printf中z+2为5;
(++x,y++)结果为y++的值,而y++是先用y,然后再给y+1,所以打印出来事5;

printf("%d %d %d\n",++y,--x,z++);
y加1后输出为5,x减1后输出为5,z输出为2后再加1.注意z++和++z的区别。
printf("%d %d\n",(++x,y++),z+2);
(++x,y++)为逗号表达式,其值等于y++的值。经过上一句后y的值为5,因此y输出为5,经过上一句后z的值为3,z+2为5,输出5.

++i;--i (在使用i之前,先使i的值加1;减1)
i++;i--(在使用i之后, 使i的值加1;减1)