1. 程式人生 > >c++中switch的default問題1331,不同位置結果不同

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