#include <ios>
#include <iostream>
#include <map>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
map<int, int> v;
int i;
int t;
while (cin >> i) {
v[i] = t++;
}
auto mi = i;
auto mt = t;
for (const auto p : v) {
if (p.second < mt) {
mi = p.first;
mt = p.second;
}
}
cout << mi << '\n';
return 0;
}
위의 프로그램은 초기화되지 않은 변수 t
을 많이 사용하지만 GCC는 -Wall 또는 -Wuninitialized로보고하지 않습니다. 왜 그래야만하지?GCC가 초기화되지 않은 변수를보고하지 않는 이유는 무엇입니까?
그것은 연타 그것을 잡는다 있음을 주목할 필요가있다 :
main.cpp:13:12: warning: variable 't' is uninitialized when used here [-Wuninitialized]
v[i] = t++;
^
사용 g ++ (GCC) 7.2.1 20170915 (레드햇 7.2.1-2).
사용 된 clang 버전 4.0.1 (태그/RELEASE_401/최종). 당신이 때해야 https://godbolt.org/g/kmYMC1에서 GCC 7.2도를보고하지 않습니다 볼 수 있듯이
. 나는 GCC의 이슈 트래커에서 티켓을 만들 것이다.
이 수행합니다 https://godbolt.org/g/3CZ6kT –
@ tobi303 누르는 작은 "경고 삼각형"을 아이콘 왼쪽 하단에 어셈블리 출력 –