关于小甲鱼的教程中,自增自减用printf输出时,到底是按照啥的求值顺序啊??
看视频教程的时候,举了如下例子,叫我们注意用Printf函数输出时,注意输出列表中的求值顺序问题,但没有说明到底是什么顺序:#include <stdio.h>
void main ()
{
int 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
看到第一行输出数字是8,应该就知道不是从左开始执行的。
于是我假设是从右开始执行,对程序做了如下修改
#include <stdio.h>
void main ()
{
int 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
还是不对啊,到底求值顺序是什么?求高手指点!我用的是VC6
楼主我和你大体相同,我使用的是++i和i++但结果显示的不一样特别是和你的++i和i++
#include <stdio.h>
void main()
{
int a = 8;
int b = a++;
int c = ++a;
int d = a--;
int e = --a;
printf("the b is %d\nthe c is %d\nthe d is%d\nthe e is %d\n",b ,c,d,e);
}
结果显示的8 10 10 8
小小书童abc 发表于 2015-3-8 17:42
楼主我和你大体相同,我使用的是++i和i++但结果显示的不一样特别是和你的++i和i++
是啊,显示的结果跟预想中不一样,不知道是不是跟编译器有关系吧。 任何顺序都有可能,不同的C编译器有不同的做法。 仰望天上的光 发表于 2015-3-8 20:58
任何顺序都有可能,不同的C编译器有不同的做法。
既然这样的话,我就可以不纠结这个问题了吧。
遇到这种算法的时候,我不用这种输出形式,就可以避免错误了 rayj 发表于 2015-3-8 22:54
既然这样的话,我就可以不纠结这个问题了吧。
遇到这种算法的时候,我不用这种输出形式,就可以避免错误 ...
可以不纠结,我个人认为这个题目只是个反例,时时刻刻提醒你自己写程序千万不要写出类似的东西出来。
页:
[1]