int main(int argc, char** argv) {
switch (argc) {
case 1000: return 42;
int y = 24;
default: return y;
}
return argc;
}
Чтобы объяснить это немного подробнее, коммутатор точно не выполняет линейную прогрессию.Логическим эквивалентом этого будет:
"Если argc равен 1000, вернуть 42. В противном случае вернуть y"
. int y = 24;
никогда не используется, поскольку оно никогда не достигается, компилятор может оптимизировать этои UB в случае значения по умолчанию может также вернуть 42.
Чтобы исправить это и вести себя так, как я подозреваю, вы намерены, вам просто нужно объявить y
вне коммутаторазаявление.
int main(int argc, char** argv) {
int y = 24;
switch (argc) {
case 1000: return 42;
default: return y;
}
return argc;
}