#include <stdio.h>
int main()
{
int i=1;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,i++,i--,++i,--i,--i,-i--,-i++);
}
这里应该注意函数调用时“求值顺序”的问题。
所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。
调用printf 函数时,如有表达式,将按照从右至左的顺序求值。
本题中先求最右边“-i++”的值为-1;后面依次求出“-i--”、“--i”....至“i++”、“i”(最左值)的值。
同时应注意:i++指先输出i,后i+1; ++i则相反是先i=i+1,计算i值后再输出i; i--及--i同上。 -i++则可以看做(-i)++先输出(-i),后++.
自然结果为:0 0 0 0 -1 0 -1 -1
应特别注意的是,无论是从左至右求值, 还是自右至左求值,其输出顺序都是不变的,
即输出顺序总是和实参表中实参的顺序相同。
这就是为什么最先求的值“-i--”会显示在最后边(最右边)。
int main()
{
int i=1;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,i++,i--,++i,--i,--i,-i--,-i++);
}
这里应该注意函数调用时“求值顺序”的问题。
所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。
调用printf 函数时,如有表达式,将按照从右至左的顺序求值。
本题中先求最右边“-i++”的值为-1;后面依次求出“-i--”、“--i”....至“i++”、“i”(最左值)的值。
同时应注意:i++指先输出i,后i+1; ++i则相反是先i=i+1,计算i值后再输出i; i--及--i同上。 -i++则可以看做(-i)++先输出(-i),后++.
自然结果为:0 0 0 0 -1 0 -1 -1
应特别注意的是,无论是从左至右求值, 还是自右至左求值,其输出顺序都是不变的,
即输出顺序总是和实参表中实参的顺序相同。
这就是为什么最先求的值“-i--”会显示在最后边(最右边)。
[此贴子已经被作者于2018-2-1 11:57编辑过]