我无法理解下面的问题,同时预递增,递增后里面的printf变量: - 在turbocpp编译器使用预增量,在MSDOS和DEVC++编译器后增量结果差异
代码: -
#include<stdio.h>
main()
{
int i=0;
clrscr();
printf("%d %d %d",i,i++,++i);
getch();
return(0);
}
在MSDOS编译器的输出是: - 2 1 1
但对于DEVC++ 5.11相同的程序输出是: - 2 1 2
1)M理解是printf打印左边的变量,然后右移(我用3个不同的变量对它进行了验证)。那么,根据那个输出不应该是0 0 2?
2)I与DEVC++尝试检查同一节目的输出,但它给了不同的结果。现在我真的很困惑,应该是输出。
3)另外,如果我变化: - 的printf( “%d%d%d”,I,++ I,I ++);输出为2 2 0
我没有得到这到底是怎么回事。有人请帮助我更好地了解...
请改变你的程序中使用单独的' printf'语句:'printf(“%d \ n”,i); printf(“%d \ n”,i ++); printf(“%d \ n”,++ i); printf(“%d \ n”,i);'。然后,一切都应该清晰明确,并且有意义。我已经测试过 –
..顺便说一句,谢谢你的回复。 – whatsinaName