gpt4 book ai didi

c++ - XLC++ 11.1 的奇怪问题

转载 作者:行者123 更新时间:2023-11-28 03:29:01 25 4
gpt4 key购买 nike

也许这是一个糟糕的编程案例,但它在 XLC++ 从 6.0 升级到 11.1 时表现出来

代码如下:

     int startAt = 140;
startAt = parseAndSaveResponseINSTANTID_MODEL(response, startAt);
COUT << "After tokenize INSTANTID_MODEL startAt=" <<startAt <<ENDL;

startAt = startAt++;
startAt = parseAndSaveResponseINSTANTID_CHRON_HISTORY(response, startAt);
COUT << "After tokenize INSTANTID_MODEL startAt=" <<startAt <<ENDL;

startAt = startAt++;
startAt = parseAndSaveResponseINSTANTID_FOLLOWUP_ACTION(response, startAt);
COUT << "After tokenize TSTID_INSTANTID_FOLLOWUP_ACTION startAt=" <<startAt <<ENDL;

startAt = startAt++;
startAt = parseAndSaveResponseINSTANTID_RISK_INDICATOR(response, startAt);
COUT << "After tokenize TSTID_INSTANTID_RISK_INDICATOR startAt=" <<startAt <<ENDL;

在每个解析方法中,我们执行一个return (startAt + 1 + vRows * 81);

vRows 在所有方法中都是零。

使用旧编译器,输出如下:

 After tokenize INSTANTID_MODEL startAt=141
vRows=0
After tokenize INSTANTID_MODEL startAt=142
vRows=0
After tokenize TSTID_INSTANTID_FOLLOWUP_ACTION startAt=143
vRows=0
After tokenize TSTID_INSTANTID_RISK_INDICATOR startAt=144

但是,使用新的编译器,输出看起来像

 After tokenize INSTANTID_MODEL startAt=141
vRows=0
After tokenize INSTANTID_MODEL startAt=143
vRows=0
After tokenize TSTID_INSTANTID_FOLLOWUP_ACTION startAt=145
vRows=0
After tokenize TSTID_INSTANTID_RISK_INDICATOR startAt=147

处理整数/返回值的方式有变化吗?

最佳答案

startAt = startAt++undefined behaviour .因为它是未定义的,所以编译器可以自由地给出它想要给出的任何结果,例如 6.0 版中的这个结果和 11.1 版中的另一个不同的结果。

;-)

使用 GCC,-Wsequence-point(或 -Wall)会针对此构造发出警告。不确定 XLC 中是否有等效警告。

关于c++ - XLC++ 11.1 的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com