为什么在函数中 'int main()' -> 's' 可以在此函数中使用单位化?

Why in function 'int main()' -> 's' may be used unitialized in this function?

本文关键字:函数 单位 main int 为什么 gt      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main(){
int n,s;
cin >> n;
for(int i = 1; i <= n; i++){
s += i;
}
cout << s;
return 1;
}

错误:

suma_gauss.cpp: In function 'int main()':
suma_gauss.cpp:14:11: warning: 's' may be used uninitialized in this function [-Wmaybe-uninitialized]
cout << s;
^

这不仅仅是一个"也许"。s在您的代码中始终未初始化使用(可能不在循环中,但最新的cout << s;(。s += i等价于s = s + i;,因此您的代码具有未定义的行为。

PS:编译器将您指向cout << s;,因为根据n,循环可能根本不执行。但是,它可以(/应该(已经警告了s+=i;.