case編譯條件
㈠ case語言怎麼用
具體如下:
1、Switch作為選擇結構中必不可少的語句也被加入到了Swift中,只要有編程經驗的人對Switch語句都不會感到陌生,但蘋果對Switch進行了大大的增強,使其擁有其他語言中沒有的特性。使用Switch語句很簡單
2、在這個最簡單的Switch語句中,與其他語言很不同的一點是:不用顯式的加上break。Swift的Switch語句會自動在case結尾處加上break,執行完滿足條件的case部分後,就自動退出了
3、在case後的多個條件中,用逗號隔開即可。 如果就是想執行完一條case之後,想繼續執行下一條case,就要用到一個新的關鍵字。
4、使用新的關鍵字fallthrough能使Switch在執行完一個case之後,緊接著執行下一條case。 Swift的Switch語句一定要涵蓋所有的情況,這並不是說一定要有default,只要上面的case能滿足所有的情況,就可以不用寫default。
5、可以看到列印輸出了:原點,x軸,y軸,如果繼續加,就會列印多出一個矩形區域。swift中的switch一定的包含變數的所有情況,如果coordinate4是(10,10)然後把default注釋點,就會報錯,因為上面4個條件是不能滿足(10,10)這個點。
6、也可以沒有default。這里的case(let x,let y)已經包含了2維坐標的所有點
㈡ SWTICH語句case後面只能接一個表達式嗎
一個case緊接的條件表達式只能是一個編譯期確定的整型常量表達式。case和這個常量表達式組成一個標簽,這個表達式是當標號用的,所以必需在編譯期確定。
case標簽本身不會被執行。一個case標簽後可以接零條或多條語句(可以用大括弧組成一條復合語句,但不必要)。遇到break;時控制流跳出switch。
====
[原創回答團]
㈢ java Switch語句編譯出錯 孤立的case是什麼意思
case 後面是常量表達式,並且必須是與條件表達式類型相兼容的值!也就是說,比如你的switch(a)裡面的a是int 型的,那麼case 後的值也應是和int 兼容的,如果你定義的a是字元型的話,那麼b就應該加上單引號。另外,常量表達式的值可以是字元,但不能是字元串。
㈣ 半瓶醋勿進,高手來,關於switch語句中case的問題
我雖然也是個半吊子,不精通java,但有點不服,為什麼不能進來呢。
所以附上自己的理解..
這兩段代碼在運行中是肯定沒區別的,唯一的區別可能只是編譯過程多了點小處理。
所以我看作是代碼在編碼中java符號的問題。
分號你可能理解,它表示一行語句的結束。我打個比方
inti;
for(i=0;i<10;i++)
print(i);
inti;
for(i=0;i<10;i++);
print(i);
你能注意到它們也只是分號不同,但結果卻大不相同。
因為第二個代碼里分號將print(i);隔離在了循環之外。
它不是提前結束循環,因為結束循環的關鍵字是break;
上面的代碼等同於
inti;
for(i=0;i<10;i++){
;;;;;;;;;
}
print(i);
就像這樣,你在語句塊里寫再多分號,也只是結束了它前面的語句(包括空)。
回到你的問題上,switch是一個語句塊,就跟for循環一樣,但它必須要有花括弧。
switch裡面的每一行語句是 case 0 : a += 2; 等同於if(i == 0) { a += 2;}
switch的用if表現的形式差不多如下,當然只可能更復雜:
booleanisBreak;
if(i==0){
if(!isBreak){
a+=2;
...;
if(!isBreak){
...;
if(!isBreak){
a+=3;
...;
if(!isBreak){
a+=7;
}
}
}
}
}
switch裡面case 0 : 你可以當作它是if(i == 0) {}
你知道只要沒有break;switch就會一直往下執行,所以case 0 :後面的分號只是結束了這個case里的某些語句(包括空),並沒有對switch這個語句塊產生任何影響。
而case 0 : 之所以是以case加條件加冒號,我想這也只是為了區分,不然寫個case 0 ;誰也沒法理解它這後面的分號起了個什麼作用,而且還容易和後面的代碼混淆。。。
㈤ case後面的語句不加大括弧為什麼有時候能編譯通過,有時候不能
case後面的語句不需要加大括弧,只要別忘了break就行。不過有的編程規范上會建議用大括弧把case後面的語句括起來。
你說的「不能通過編譯」,可能是下面這個原因。C/C++里規定,不能在case語句里定義局部變數。例如:
int a = 2;
switch (a)
{
case 1:
int c = 10;
break;
case 2:
break;
default:
break;
}
編譯就會出錯,原因是在case 1里定義了局部變數c。
而C/C++還有一個很有意思的規定,用{}包括的語句,認為是一個」語句塊「,而在語句塊里就能想干什麼就干什麼。
比如:
switch (a)
{
case 1:
{
int c = 10;
break;
}
case 2:
break;
default:
break;
}
這樣就能通過編譯了。
再多說兩句廢話。C/C++里這個用{}括起來的語句塊,可以認為是一段完全獨立的代碼。比如:
int a = 2;
{
int a = 3;
}
這樣完全沒問題。而你要是把這對大括弧刪掉,就會出錯。
㈥ SWTICH語句case後面只能接一個表達式嗎
一個case緊接的條件表達式只能是一個編譯期確定的整型常量表達式,case和這個常量表達式組成一個標簽,這個表達式是當標號用的,所以必需在編譯期確定。
case標簽本身不會被執行,一個case標簽後可以接零條或多條語句(可以用大括弧組成一條復合語句,但不必要),遇到break時控制流跳出switch。
㈦ case語句用法 case語句怎麼用
1、case語句用法:c語言中每一個case 的最後加上一個break語句,就是為了防止它進入下一個case,把下一個case中的語句輸出。
2、結束一個switch case 語句是有兩中結束方式的,第一種是遇到switch case 這個語句的括弧,第二種是遇到break。
3、case 中的語句,用代碼驗證。這樣的代碼在編譯的時刻就會出現錯誤 ,原因是標號只能是語句的一部分,而並非語法。
㈧ 在C#中怎樣用switch-case語句
1、C#的switch-case語句使用示例:
int week = 5;
switch (week)
{
case 1: break; //變數week的值為1,不做任何處理,結束switch語句
case 2:
case 3:
case 4:
case 5:
Console.WriteLine("今天是工作日");//當變數week的值為2,3,4,5中任意一個值時,由於其後沒有關鍵字"break",所以會順序執行到輸出語句
break; //結束switch語句
case 6:
case 7:
Console.WriteLine("今天是休息日");//同理
break;
defalut:
Console.WriteLine("無效的輸入值");
break;
}
2、C#的switch語句的語法如下:
switch ( controllingExpression )
{
case constantExpression :
statements
break;
case constantExpression :
statements
break;
...
default :
statements
break;
}
其中,switch、case、default和break是關鍵字。
3、遵守switch語句規則:
只能針對基本數據類型使用switch,這些類型包括int和string等待。對於其他類型,則必須使用if語句。
case標簽必須是常量表達式(constantExpression),如42或者"42"。如果需要在運行時計算case標簽的值,必須使用if語句。
case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。
可以連續寫下一系列case標簽(中間不能間插額外的語句),從而指定自己希望在多種情況下都運行相同的語句。如果像這樣寫,那麼最後一個case標簽之後的代碼將適用於所有case。然而,假如一個標簽關聯了一個或多個語句,又沒有使用break來跳出,那麼執行就不能貫穿到後續的標簽,而且編譯器會報告一個錯誤。
(8)case編譯條件擴展閱讀:
C#三元運算符
C#中有一個三元運算符「?:」,語法為:條件表達式?表達式1:表達式2;
該操作首先求出條件表達式的值(bool類型),為true時調用表達式1,為flase時調用表達式2。其邏輯為:「如果為真執行第一個,否則執行第二個。」
例如:
a=3>4?3:4;輸出為4。
a=3<4?3:4;輸出為3。
Microsoft Docs.switch