c++中switch的default問題1331,不同位置結果不同
首先明確一點default不同位置輸出是不同的:
例子;
#include <iostream> using namespace std; int main() { int a=1,b=2,c=3,d=4,y=10; switch(y){ case 1:a++;break; default:d=1; case 2:b++;break;//b是可以跑進去的 case 4:c++;break; } cout << a<<b<<c<<d<< endl; return 0; }
結果:
1331
例子:
#include <iostream> using namespace std; int main() { int a=1,b=2,c=3,d=4,y=10; switch(y){ case 1:a++;break; case 2:b++;break; default:d=1; case 4:c++;break; //c++是跑進去了 } cout << a<<b<<c<<d<< endl; return 0; }
結果:
1241
解釋:這是在程式中debug的,原理:程式一步一步的跑,遇到default包進去,接下來語句包進去,遇break跳出switch,就是結果,網上有很多不對,注意。下面是debug截圖。再來一個例子:
#include <iostream> using namespace std; int main() { int a=1,b=2,c=3,d=4,y=10; switch(y){ case 1:a++;break; default:d=1;
case 2:b++; case 4:c++;break; } cout << a<<b<<c<<d<< endl; return 0; }
結果:
1341