一个关于i,i++,i++的、连续输出问题
#include<stdio.h>int i;
i=1;
printf("%d,%d,%d",i,i++,i++);
这个程序的结果是3,2,1。但弄不明白其中的原因。求教!!
搜索更多相关的解决方案:
输出
----------------解决方案--------------------------------------------------------
如果改成
#include <stdio.h>
main()
{
int a,b,c ,i=1;
a=i;
b=i++;
c=i ++;
printf("%d,%d,%d",i,i++,i++);
printf("%d,%d,%d ",a,b,c);
}
又如何理解呢?
----------------解决方案--------------------------------------------------------
以下是引用huzi00008在2006-10-19 10:41:56的发言:
#include<stdio.h>
int i;
i=1;
printf("%d,%d,%d",i,i++,i++);
这个程序的结果是3,2,1。但弄不明白其中的原因。求教!!
#include<stdio.h>
int i;
i=1;
printf("%d,%d,%d",i,i++,i++);
这个程序的结果是3,2,1。但弄不明白其中的原因。求教!!
printf("%d,%d,%d",i,i++,i++); /*是从右向左扫描,那么第三个就还是1,再加1,第二个就是2,加1,第一个就是3了*/
----------------解决方案--------------------------------------------------------
以下是引用huzi00008在2006-10-19 10:47:47的发言:
如果改成
#include <stdio.h>
main()
{
int a,b,c ,i=1;
a=i;
b=i++;
c=i ++;
printf("%d,%d,%d",i,i++,i++);
printf("%d,%d,%d ",a,b,c);
}
又如何理解呢?
如果改成
#include <stdio.h>
main()
{
int a,b,c ,i=1;
a=i;
b=i++;
c=i ++;
printf("%d,%d,%d",i,i++,i++);
printf("%d,%d,%d ",a,b,c);
}
又如何理解呢?
第一个printf()如上所讲的原理一样,只不过i的值是3而已;
----------------解决方案--------------------------------------------------------
能详细些吗?还是有些懵懂
----------------解决方案--------------------------------------------------------
编译程序是从右到左开始编译的,所以就为3,2,1了
----------------解决方案--------------------------------------------------------
谢谢二位
----------------解决方案--------------------------------------------------------