C语言printf函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:13:18
//printf函数的求值顺序问题:编写一段C代码,实现用一个printf函数和多个printf函数输出同样的内容。
#include<stdio.h>
void main()
{
int i=8;
//用一个printf函数输出
printf("%d,%d,%d,%d,%d,%d\n",++i,--i,i++,i--,-i++,-i--);
//-i--=-8,-i++=-7,i--=8,i++=7,--i=7,++i=8 8,7,7,8,-7,-8
}
书上的值和在VC++中得到的结果不同,我想知道为什么啊?
VC++的结果是8,7,8,8,-8,-8
书上的结果是8,7,7,8,-7,-8
对,编译器不一样。书上的是Turbo c的。
但是为什么呢?

在一个语句中对一个变量多次加加或减减(除非是&& ||隔开的)的代码, 具体怎么处理, 由编译器自己定. ASNI/ISO C标准对此不作统一规定.
类似的不统一的行为还有:
int a=1<<33;
有的编译器处理结果为0, 有的为2

这个是编译器的问题的 ,,每个编译器都有自己的约定 有的说现赋值后自加

有的是现自加后赋值 就这个意思,所以你不必介意这些小问题

呵呵 希望对你有帮助

一起学习

这可能与编译器油关,不同的编译器,定义可能有些偏差

参数的传递C语言标准并没有规定优先级,因此会根据编译器的不同而有所不同,即使同一个编译器也可能因为条件不同而出现不同的结果