|
发表于 2012-9-25 21:57:08
|
显示全部楼层
本帖最后由 画个圈圈叉死你 于 2012-9-25 21:59 编辑
我是在vc++6.0中做的程序
请看程序:
/* 程序1 */
#include <stdio.h>
void main()
{
int i,;
i = 8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
}
计算机给出了8,7,8,8,-8,-8
如果把程序写成、
/* 程序2*/
#include <stdio.h>
void main()
{
int i;
i = 8;
printf("%d\n",-i--);
printf("%d\n",-i++);
printf("%d\n",i--);
printf("%d\n",i++);
printf("%d\n",--i);
printf("%d\n",++i);
}
结果是 -8,-7,8,7,7,8
如果在前面添加一个i,即
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++,-i--);
则结果为8,8,7,8,8,-8,-8
如果再做修改,如下:
/* 程序3*/
#include <stdio.h>
void main()
{
int i;
i = 8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++,-i--);
printf("%d\n",i);
}
结果为8,8,7,8,8,-8,-8,8
若改为
#include <stdio.h>
void main()
{
int i;
i = 8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++,-i++);
printf("%d\n",i);
}
结果为8,8,7,8,8,-8,-8,10
所以可以看出:
1.在单个printf中是自右向左按顺序运算的。
2.当运算遇到++(--)后置时,只提取i值而暂时不进行自增(减)。
3.当运算遇到++(--)前置时,进行自增(减)并提取表达式的值。
4.当printf中所有参数输出完毕,再运算尚未自增(减)的后置
|
|