追求真理: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环境下得出的运行情况:

还没有任何评论哟~
