C++ 中关于cout和i++、++i的问题
PHP中文网
PHP中文网 2017-04-17 11:04:20
[C++讨论组]
#include 
using namespace std;
int main(){
	int i=0;
	cout<

对以上代码的输出如何解释?不太明白(编译环境为VS2010)

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
伊谢尔伦

不要再纠结这种和编译器处理非常相关的问题了,现实世界里基本不会遇到这样的场景。
好吧 既然被踩了就多说几句,这种傻逼情景应该只会在天朝的考试和国内作者出的垃圾书上出现。

天蓬老师

我记得曾经有过这样一个问题,C语言中:

#include <stdio.h>
int main()
{
    int a, b;
    a = 2;
    b = (++a) * (++a) * (++a);
    printf("%d\n", b);
    return 0;
}

gcc输出结果是80,但是TC的结果是60。据我们几个人推测原因是,gcc编译器是这样处理的:

    a = ++a;                //a == 3 
    a = ++a;                //a == 4
    b = a * a               //b == 4 * 4==16
    a = ++a;                //a == 5
    b = b * a;              //b == 16 * 5 == 80

而TC编译器是这样处理的:

    a = ++a;                //a == 3
    b = 3 * (++a);
    a = ++a;                //a == 4
    b = 3 * 4;
    a = ++a;                //a == 5
    b = b * a;              //b == 12 * 5 == 60

个人理解呢,C语言也好C++也好只是一种标准,每个编译器在不违反标准的前提下有自己实现的办法,所以在写代码的时候注意不要写这种模棱两可的东西,不然移植性太差,以及容易出各种问题。事实上也没必要深究,除非是研究需要之类的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号