国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

詳解C++編程中的條件判斷語句if-else與switch的用法

2020-05-23 14:10:29
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++編程中的條件判斷語句if-else與switch的用法,是C++入門學習中的基礎知識,需要的朋友可以參考下
 

if-else 語句
控制條件分支。
語法

  if ( expression ) statement1[else statement2]

備注
如果 expression 的值不為零,執行 statement1 。如果選項 else 存在,如果 expression 的值為零,執行 statement2。 表達式必須是算術或指針類型,或者必須是定義明確的整型或指針類型轉換的類類型。有關轉換器的信息,請參見標準轉換。
在兩個形式的 if 語句和 expression 語句中計算,可以具有除結構以外的任何值,包括所有副作用。除非 statement 中的一個包含 break、 continue 或 goto,控件才能從 if 語句傳遞到項目中的下一條語句。
if...else 語句的 else 子句與在沒有相應的 else 語句的同一范圍的最接近的前面 if 語句相關。
為了使此示例可以明確有關 if...else 配對,取消對大括號的注釋。

// if_else_statement.cpp#include <stdio.h>int main() { int x = 0; if (x == 0) {  printf_s("x is 0!/n"); } else {  printf_s("x is not 0!/n"); // this statement will not be executed } x = 1; if (x == 0) {  printf_s("x is 0!/n"); // this statement will not be executed } else {  printf_s("x is not 0!/n"); } return 0;}

輸出:

x 是 0!x 不是 0!

switch 語句
允許根據整型表達式的值在多個代碼段中進行選擇。
語法

 switch ( expression )case constant-expression : statement[default : statement]

備注
expression 必須屬于整型或存在到整型的明確轉換的類類型。將按照整型提升中所述的方式執行整型提升。
switch 語句體由一系列 case 標簽和一個可選 default 標簽組成。 case 語句中的兩個常量表達式的計算結果不能為同一個值。 default 標簽只能出現一次。標記語句不是語法要求,但如果它們不存在,switch 語句是無意義的。默認語句無需顯示在末尾;它可以顯示在 switch 語句體的任何位置。case 或 default 標簽只能顯示在 switch 語句內。
每個 case 標簽中的 constant-expression 將轉換為 expression 類型,并將與 expression 比較是否等效。控制到其 case constant-expression 與 expression 的值匹配的語句的傳遞。下表中顯示了生成的行為。
switch 語句行為

條件 操作
轉換后的值與提升的控制表達式的值匹配。轉換后的值與提升的控制表達式的值匹配。 控制將轉移到跟在該標簽后面的語句。
沒有常量與 case 標簽中的常量匹配;default 標簽存在。 控制將轉移到 default 標簽。
沒有常量與 case 標簽中的常量匹配;default 標簽不存在。 控制將轉移到 switch 語句之后的語句。

如果找到匹配的表達式,則后續 case 或 default 標簽不會妨礙控制。 break 語句用于停止執行并將控制轉移到 switch 語句之后的語句。如果沒有 break 語句,則將執行從匹配的 case 標簽到 switch 末尾的每個語句,包括 default。例如:

 

// switch_statement1.cpp#include <stdio.h>int main() { char *buffer = "Any character stream"; int capa, lettera, nota; char c; capa = lettera = nota = 0; while ( c = *buffer++ ) // Walks buffer until NULL {  switch ( c )  {   case 'A':   capa++;   break;   case 'a':   lettera++;   break;   default:   nota++;  } } printf_s( "/nUppercase a: %d/nLowercase a: %d/nTotal: %d/n",  capa, lettera, (capa + lettera + nota) );}

在上面的示例中,如果 c 是大寫 A,則 capa 將遞增。 capa++ 之后的 break 語句會終止 switch 語句體的執行并將控制轉移到 while 循環。如果沒有 break 語句,lettera 和 nota 也將遞增。 case 'a' 的 break 語句也能達到類似的目的。如果 c 是小寫 a,則 lettera 將遞增,并且 break 語句將終止 switch 語句體。如果 c 不是 a 或 A,則將執行 default 語句。
switch 語句的內部塊可以包含帶有初始化的定義,前提是可以訪問到它們 - 即,所有可能的執行路徑都不會繞過它們。使用這些聲明引入的名稱具有局部范圍。例如:

// switch_statement2.cpp// C2360 expected#include <iostream>using namespace std;int main(int argc, char *argv[]){ switch( tolower( *argv[1] ) ) {  // Error. Unreachable declaration.  char szChEntered[] = "Character entered was: "; case 'a' :  {  // Declaration of szChEntered OK. Local scope.  char szChEntered[] = "Character entered was: ";  cout << szChEntered << "a/n";  }  break; case 'b' :  // Value of szChEntered undefined.  cout << szChEntered << "b/n";  break; default:  // Value of szChEntered undefined.  cout << szChEntered << "neither a nor b/n";  break; }}

switch 語句可以嵌套。在這種情況下,case 或 default 標簽將與封裝它們的最近的 switch 語句關聯。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 云梦县| 宁强县| 拉萨市| 德令哈市| 慈利县| 胶州市| 淳化县| 宝清县| 四川省| 清苑县| 青冈县| 上犹县| 铜鼓县| 邵阳市| 平凉市| 水富县| 罗田县| 温泉县| 安康市| 广安市| 阳新县| 海林市| 邢台县| 陵川县| 沙坪坝区| 望都县| 建宁县| 林芝县| 泽州县| 陇西县| 库车县| 塔河县| 长武县| 山东省| 延吉市| 桐梓县| 肥东县| 临邑县| 彭水| 莫力|