返回信息流请教一下各位:
【*例 4.4】写出下面程序的运行结果。
#include<iostream>
using namespace std;
int main() {
int i,sum;
sum=0;
for(; i<=100;) {
sum+=i;
i++;
}
cout<<i<<" "<<sum<<endl;
return 0;
}
这道题,我初看:i没有初始化就使用,犯了大忌。教材这样写匪夷所思。
但是因为不常用c++,本地dev c++集成环境跑了几次都正常运行。不知道我的理解对不对?
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #101617同步于 2025/3/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
【问题】CCF中学生计算机程序设计教材入门篇 例4.4代码有问题?
cling1988
2025/3/29镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
这是ub,未定义行为。
但是正常运行可以有以下解释。
1.编译器会报warning,只要开了优化(o1及以上)编译器就会帮你初始化。
2.windows通常会为新进程分配干净的页面,当你的程序简单到无可附加时,可能栈里确实什么都没发生所以数据里都是0。
但是纠结这些原因意义不大,玄学,不要写ub就行。