C语言--请教!!

来源:百度知道 编辑:UC知道 时间:2024/06/07 13:04:19
有下面的程序:
void main()
{
int i=2;
printf("\n%d%d%d",i++,i++,i++);
}
运行之后为什么是432???
谢谢指点!!

C 语言编辑器 的输出是 从左到右 来检测输出的。

运行了 是 222啊!

printf 语句中的自增,自减是采用堆栈式输出的。即,先算最后一个i++,依次向前,最后再依次输出。由于++在后,是先引用,后自增。所以是432.

printf("\n%d%d%d",i++,i++,i++);
是从自右向左进行的 ,先把i输出,再自加给下次用,这样先输出2,然后i变为3,同理输出432

i++,是从自右向左进行的
i++=i=2;但是此时i=3,
依次向左,i++=i=3,i变成4,依次再向左,
printf("\n%d%d%d",i++,i++,i++);
输出语句中,一个i++以一个%d输出,所以,对应着从左到右输出,变成了432

看编译器运算机制了~
有的是从右向左运算:
就是i++,i++,i++;首先第3个i++,M是显示的时候是2。然后第2个i++,显示时是3。然后才是4。
显示的时候就成了,432
类似的如:i+++j+++k;
用括号写出他计算的顺序:
1:从右向左:i+(++(j+(++k)))
2:从左向右:(((i+)++j)+(++k)
所以不管怎么算,都是计算机的事。
为了解除这种计算机问题上的无奈,所以就有了第二种方法:
printf("%d",i++);
printf("%d",i++);
printf("%d",i++);
这与计算机或者编译器无关~很好~~很强大~~我喜欢~也建议你喜欢