当前位置 - 股票行情交易網 - 股票交易 - switch的專業術語

switch的專業術語

當然交換機的功能還不止如此,它可以把網絡拆解成網絡分支、分割網絡數據流,隔離分支中發生的故障,這樣就可以減少每個網絡分支的數據信息流量而使每個網絡更有效,提高整個網絡效率。目前有使用SWITCH代替HUB的趨勢。

在計算機網絡系統中,交換概念的提出改進了***享工作模式。而HUB集線器就是壹種***享設備,HUB本身不能識別目的地址,當同壹局域網內的A主機給B主機傳輸數據時,數據包在以HUB為架構的網絡上是以廣播方式傳輸的,由每壹臺終端通過驗證數據包頭的地址信息來確定是否接收。也就是說,在這種工作方式下,同壹時刻網絡上只能傳輸壹組數據幀的通訊,如果發生碰撞還得重試。這種方式就是***享網絡帶寬。通俗的說,普通交換機是不帶管理功能的,壹根進線,其他接口接到電腦上就可以了。

工作在數據鏈路層,交換機擁有壹條很高帶寬的背部總線和內部交換矩陣。交換機的所有的端口都掛接在這條背部總線上,控制電路收到數據包以後,處理端口會查找內存中的地址對照表以確定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪個端口上,通過內部交換矩陣迅速將數據包傳送到目的端口,目的MAC若不存在,廣播到所有的端口,接收端口回應後交換機會“學習”新的地址,並把它添加入內部MAC地址表中。使用交換機也可以把網絡“分段”,通過對照IP地址表,交換機只允許必要的網絡流量通過交換機。通過交換機的過濾和轉發,可以有效的減少沖突域,但它不能劃分網絡層廣播,即廣播域。交換機在同壹時刻可進行多個端口對之間的數據傳輸。每壹端口都可視為獨立的網段,連接在其上的網絡設備獨自享有全部的帶寬,無須同其他設備競爭使用。當節點A向節點D發送數據時,節點B可同時向節點C發送數據,而且這兩個傳輸都享有網絡的全部帶寬,都有著自己的虛擬連接。假使這裏使用的是10Mbps的以太網交換機,那麽該交換機這時的總流通量就等於2×10Mbps=20Mbps,而使用10Mbps的***享式HUB時,壹個HUB的總流通量也不會超出10Mbps。總之,交換機是壹種基於MAC地址識別,能完成封裝轉發數據幀功能的網絡設備。交換機可以“學習”MAC地址,並把其存放在內部地址表中,通過在數據幀的始發者和目標接收者之間建立臨時的交換路徑,使數據幀直接由源地址到達目的地址。 Switch用在編程中,如C語言中它經常跟Case壹起使用,是壹個判斷選擇代碼。其功能就是控制業務流程流轉的。

直線翻譯:switch語句,即“切換”語句;case即“情況”。

switch語句的語法如下(switch,case和default是關鍵字):

switch ( controllingExpression )

{case constantExpression1 :

case constantExpression2 :

case constantExpression3 :

statements; /*當滿足constantExpression1、constantExpression2、constantExpression3任何壹個都執行statements */

break;

case constantExpression :

statements ;

break;

...

default :

statements ;

break;}

遵守switch語句規則

switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:

只能針對基本數據類型使用switch,這些類型包括int、char等。對於其他類型,則必須使用if語句。

switch()的參數類型不能為實型 。

case標簽必須是常量表達式(constantExpression),如42或者42。

case標簽必須是惟壹性的表達式;也就是說,不允許兩個case具有相同的值。

C語言switch應用例子:

例壹: #include<stdio.h>int?main(){double?score;printf(請輸入分數:\n);scanf(%lf,&score);switch((int)(score/10))//switch((int)score/10)出現嚴重錯誤{case?10:case?9:printf(A(最好)\n);break;case?8:printf(B(優秀)\n);break;case?7:printf(C(良好)\n);break;case?6:printf(D(及格)\n);break;case?5:case?4:case?3:case?2:case?1:case?0:printf(E(不及格)\n);break;default:printf(Error!\n);}}例二: #include<stdio.h>intmain(){charrank;printf(請輸入分數等級:(A、B、C、D、E)\n);scanf(%c,&rank);switch(rank)//switch((int)score/10)出現嚴重錯誤,switch(((int)score)/10)出現嚴重錯誤,{case'A':printf(A(90~100)\n);break;case'B':printf(B(80~89)\n);break;case'C':printf(C(70~79)\n);break;case'D':printf(D(60~69)\n);break;case'E':printf(E(0~59)\n);break;default:printf(error!\n);break;}}例三:

輸入年月日,判斷這壹天是這壹年的第幾天。 #include<stdio.h>intmain(){intyear,month,date,leap,days=0;scanf(%4d%2d%2d,&year,&month,&date);leap=(year%4==0&&year%100!=0||year%400==0);switch(month){case12:days+=30;case11:days+=31;case10:days+=30;case9:days+=31;case8:days+=31;case7:days+=30;case6:days+=31;case5:days+=30;case4:days+=31;case3:days+=28+leap;case2:days+=31;case1:days+=date;break;}printf(%4d年%2d月%2d日是這壹年的第%d天。\n,year,month,date,days);} 如果希望選擇執行若幹代碼塊中的壹個,妳可以使用 switch 語句:

語法:

switch (n)

{ case 1: 執行代碼塊1 break

case 2: 執行代碼塊2 break

default: 如果n即不是1也不是2,則執行此代碼 }

switch (n) { case 1: 執行代碼塊1 break

case 2: 執行代碼塊2 break

default: 如果n即不是1也不是2,則執行此代碼 }

工作原理:switch 後面的 (n) 可以是表達式,也可以(並通常)是變量。然後表達式中的值會與 case 中的數字作比較,如果與某個 case 相匹配,那麽其後的代碼就會被執行。break 的作用是防止代碼自動執行到下壹行。

實例: <scripttype=text/javascript>//Youwillreceiveadifferentgreetingbased//onwhatdayitis.NotethatSunday=0,//Monday=1,Tuesday=2,etc.vard=newDate()theDay=d.getDay()switch(theDay){case5:document.write(FinallyFriday)breakcase6:document.write(SuperSaturday)breakcase0:document.write(SleepySunday)breakdefault:document.write(I'mlookingforwardtothisweekend!)}</script>switch 語句和具有同樣表達式的壹系列的 IF 語句相似。很多場合下需要把同壹個變量(或表達式)與很多不同的值比較,並根據它等於哪個值來執行不同的代碼。這正是 switch 語句的用途。

註: 註意和其它語言不同,continue 語句作用到 switch 上的作用類似於 break。如果在循環中有壹個 switch 並希望 continue 到外層循環中的下壹個輪回,用 continue 2。 如果您希望有選擇地執行若幹代碼塊之壹,請使用 Switch 語句。

使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊。

語法

switch (expression)

{

case label1:

code to be executed if expression = label1;

break;

case label2:

code to be executed if expression = label2;

break;

default:

code to be executed

if expression is different

from both label1 and label2;

}

工作原理:

對表達式(通常是變量)進行壹次計算

把表達式的值與結構中 case 的值進行比較

如果存在匹配,則執行與 case 關聯的代碼

代碼執行後,break語句阻止代碼跳入下壹個 case 中繼續執行

如果沒有 case 為真,則使用 default 語句

下面的例子使用兩種不同方法實現同樣的事,壹個用壹系列的 if 語句,另壹個用 switch 語句:

例子1. switch結構 <?phpif($i==0){echoiequals0;}elseif($i==1){echoiequals1;}elseif($i==2){echoiequals2;}switch($i){case0:echoiequals0;break;case1:echoiequals1;break;case2:echoiequals2;break;}?>例子2. switch結構可以用字符串 <?phpswitch($i){caseapple:echoiisapple;break;casebar:echoiisbar;break;casecake:echoiiscake;break;}?>為避免錯誤,理解 switch 是怎樣執行的非常重要。switch 語句壹行接壹行地執行(實際上是語句接語句)。開始時沒有代碼被執行。僅當壹個 case 語句中的值和 switch 表達式的值匹配時 php 才開始執行語句,直到 switch 的程序段結束或者遇到第壹個 break 語句為止。如果不在 case 的語句段最後寫上 break 的話,php 將繼續執行下壹個 case 中的語句段。例如: <?phpswitch($i){case0:echoiequals0;case1:echoiequals1;case2:echoiequals2;}?>這裏如果 $i 等於 0,php 將執行所有的 print 語句!如果 $i 等於 1,php 將執行後面兩條 print 語句。只有當 $i 等於 2 時,才會得到“預期”的結果――只顯示“i equals 2”。所以,別忘了 break 語句就很重要(即使在某些情況下故意想避免提供它們時)。

在 switch 語句中條件只求值壹次並用來和每個 case 語句比較。在 elseif 語句中條件會再次求值。如果條件比壹個簡單的比較要復雜得多或者在壹個很多次的循環中,那麽用 switch 語句可能會快壹些。

在壹個 case 中的語句也可以為空,這樣只不過將控制轉移到了下壹個 case 中的語句。 <?phpswitch($i){case0:case1:case2:echoiislessthan3butnotnegative;break;case3:echoiis3;}?>壹個 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情況,並且應該是最後壹條 case 語句。例如: <?phpswitch($i){case0:echoiequals0;break;case1:echoiequals1;break;case2:echoiequals2;break;default:echoiisnotequalto0,1or2;}?>case 表達式可以是任何求值為簡單類型的表達式,即整型或浮點數以及字符串。不能用數組或對象,除非它們被解除引用成為簡單類型。

switch 支持替代語法的流程控制。更多信息見流程控制的替代語法壹節。 <?phpswitch($i):case0:echoiequals0;break;case1:echoiequals1;break;case2:echoiequals2;break;default:echoiisnotequalto0,1or2;endswitch;?> switch(exprl){  case expr2:  statements;  break;  case expr3:  statements;  break;  default:  statements;  break;  }

switch語句執行時會從上到下根據括號中表達式的值作比較,當某個case語句中的表達式與此值相同時,就執行這個case語句或語句序列,直到遇到break為止。 break語句是必須有的,它用來結束switch語句的執行。如果所有case語句後面的表達式都不等於switch語句的表達式expr1的值川0執行default後面的默認語句序列。不過,default部分是可選的。如果沒有這壹部分,並遇到所有case語句都不匹配,那麽,就不作任何處理而進入後續程序段的執行。 可見,壹個switch語句可以代替多個if-else語句組成的分支結構,而switch語句從思路上顯得更清晰。 使用switch語句時,要註意expr1必須是符合byte,char,short,int類型的常量表達式,而不能用浮點類型或long類型,也不能為壹個字符串。 1 switch(colorNum){ 2 case 0:  3 setBackground(colo. red);  4 break;  5 case 1:  6 setBackground(color.green) ;  7 break;  8 default:  9 setBackground(color.black);  10 break;  11 }

switch還有壹個用法:  1 switch(colorNum){ 2 case 0: 3 case 1:  4 setBackground(color.green) ;  5 break;  6 default:  7 setBackground(color.black);  8 break;  9 }