标题:小问题,无法解决,求指导
只看楼主
sky8558
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-2-1
得分:0 
#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--”会显示在最后边(最右边)。


[此贴子已经被作者于2018-2-1 11:57编辑过]

2018-02-01 11:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484441-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.098969 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved