Advertisement

追求真理:Why is ++i more efficient than i++ in C?

阅读量:

背景

或许不少人都曾面临过类似的困惑:printf("%d,%d",i++,++i);

对此问题也曾感到迷茫,究竟正确的结果应当是怎样的呢?然而,却难以找到相关的参考资料。唯一可以确定的是,几乎所有的C语言教材都这样解释:i++的执行方式是先使用i的当前值,随后再将i自身加一;而++i则是先对i进行加一操作,之后再使用更新后的值。为了探寻真相,今天我们将全面解析这一问题。

例如如下情况:

复制代码
    int a,b;int i=10,j=10;a=i++;b=++j;
    

通过分析可以明确得出,a与b的具体数值将分别确定为10和11。这一结论具有绝对的确定性,因为在任何运行环境及编译工具下,其计算结果均保持一致!

不过,针对如下所示的程序:

复制代码
    int a,b;int i=10,j=10;a=(i++)+(i++)+(i++);b=(++j)+(++j)+(++j);
    

各位不妨思考一下,最终的答案会是怎样的呢?

不妨将其输入编译器进行执行,实际运行结果如下所示:

首先观察在Windows系统中广泛使用的VC6环境下得出的运行情况:

![](https://ad.itadn.com/c/weblog/blog-img/images/2025-05-31/xs7MpcAD5QPgBSbXlRr6ot0Thf

全部评论 (0)

还没有任何评论哟~