你是Switch我是case

2021-10-23 09:10:18 字數 2076 閱讀 7686

switch case 和 if else 的區別和聯絡

switch case 和if else 都表示分支結構

switch中類似goto,有一一對映關係,判斷一次直接跳轉;

if可能進行多次判斷(所以對立事件寫if, else if,而不是if,if;避免多次無效判斷,這也是很多人說switch效率略高if一點的原因,事實上可以忽略不計);

if()

else if()

else if()結構中,只進入一次函式體,即滿足某乙個條件,執行完**後,跳出整個if結構

如:string ifelse(int x )

string strretvalue;

if (x == 1)

strretvalue = "1";

else if (x == 1 || x == 2)

strretvalue = "2";

else if (x == 1)

strretvalue = "3";

return strretvalue;

傳1進入,返回值是「1」,即滿足第乙個條件後,下面兩個else if不會被執行,也不會進行判斷,如果是if if if 則進行三次判斷,結果是「3」,由於只進入一次判定條件,所以正常寫法應直接return value;

switch中,不加break則goto到指定條件之後的整個**體都會執行(穿透效果),所以一般情況下不能忘記加break;(莫名類似 do{}while(0),指定條件跳出);

string ifelse(int x )

string strretvalue;

switch(x)

case 0:

strretvalue = "0";

case 1:

strretvalue = "1";

case 2:

strretvalue = "2";

return strretvalue;

傳1進入,strretvalue 先等於1,然後等於2,返回值為「2」,而且語法沒有問題,不報錯,顯然不對。

穿透的用法:

1、實現多種條件的判斷,如

if(x == 1 || x == 2 || x == 3)

strretvalue = "3";
可以寫成

switch(x)

case 1:

case 2:

case 3:

strretvalue = "3";

break;

2、與do{}while(0)相反

do while(0); 執行前兩行**,break後面的不執行,而利用switch的穿透,可以goto到某一條件開始執行,跳過前面的**;

舉個栗子:

寫方法實現今年累加到本月的天數。(傳入1月,返回31天,傳入2月,返回31+28(29)天,傳入3月,返回31+28(29)+ 31 天)

int getdays(int month)

int nreturnvalue = 0;

switch (month)

case 12: nreturnvalue += 31;

case 11: nreturnvalue += 30;

case 10: nreturnvalue += 31;

case 9: nreturnvalue += 30;

case 8: nreturnvalue += 31;

case 7: nreturnvalue += 31;

case 6: nreturnvalue += 30;

case 5: nreturnvalue += 31;

case 4: nreturnvalue += 30;

case 3: nreturnvalue += 31;

case 2: nreturnvalue += runnian() ? 29 : 28;

case 1: nreturnvalue += 31;

return nreturnvalu;

是我冤枉了你

買了電腦放假回來當然是要上網的了,為了顯示我是專業人士,我用了當時最快的網速2m的adsl當然是電信的了開始了我的網路生涯 當然是家裡的了 和學校的 網咖 裡果然是天淵之別,畢竟是2m的。又過來乙個學期又到假期聽說138圓的公升成3m的了,我又乙個哥們比我還早裝的他當時是1m,從1到2,然後到3,大...

你是我的酒精

前世的輪迴,今生的追憶。只為奈何橋上那無悔的誓言。縱然尋她千百遍,暮然回首,希望伊人已在燈火闌珊處。你好像那56度白酒,我就是那個酒鬼。遇到你,我醉了,從此整個世界都是愛的國度。見不到你,我暈了,從此整個人間都虛無縹緲。你的一句話,讓我不知所措 你的一句話,讓我輾轉反側 你的 一句話,讓我生不如死 ...

你是我的春夏秋冬,我是你的甲乙丙丁

你是我的春夏秋冬,我是你的甲乙丙丁 別試圖走近我一顆心除了他什麼也沒有。曾經以為的天長地久,其實不過是萍水相逢。接納不了乙個人,是因為忘不了另乙個人。乙個人只要不再想要,就什麼都可以放下。所有人對自己都是假的,只有自己對自己是真的。其實狠在乎你,只是沒有說出口而已。謊言,經過包裝有乙個更好聽的名字。...