Objective-C語言控制語句

來源:互聯網
上載者:User

標籤:枚舉類   限制   defaults   blog   轉換   for迴圈   定義   object   imu   

• 分支語句
• 迴圈語句
• 跳躍陳述式

Objective-C中的控制語句有以下幾類:
• 分支語句:if-else, switch
• 迴圈語句:while, do-while, for
• 與程式轉移有關的跳躍陳述式:break, continue, goto

 

分支語句提供了一種控制機制,使得程式的執行可以跳過某些語句不執行,而轉去執行特定的語句。

1.條件陳述式 if-else
2.多分支語句 switch

 

條件陳述式 if-else,基本文法形式如下,其中“[]”中的部分可以省略。

if (boolean-expression)
   statement1;
[else if (boolean-expression) statement2;]
[else statement3;]

int number1 = 0;int number2 = 1;int max = 0;if (number1 > number2) {max = number1;} else {max = number2;}// 列印最大值maxNSLog(@"The maximum is %i", max);

 

多分支語句 switch它的文法形式如下,其中“[]”中的部分可以省略。

switch (expression){    case value1 : statement1;    break;   …………    case valueN : statemendN;    break;    [default : defaultStatement; ]  }
int score = 0;scanf("%i", &score);int scoreVal = score / 10;char resChar = ‘ ‘;switch (scoreVal) {case 9:resChar = ‘A‘;break;case 8:resChar = ‘B‘;break;case 7:resChar = ‘C‘;break;case 6:resChar = ‘E‘;break;default :resChar = ‘F‘;}NSLog(@"你的分數是:%c", resChar);

 

使用switch語句一定要注意的是:運算式expression的傳回值類型必須是整數或能夠自動轉換成整數的類型都可以,因此可以是_Bool、char、short int、枚舉類型、int、long int、longlong以及它們的無符號類型等。但不能是float和double等浮點類型。case子句中的值valueN必須是常量,而且所有case子句中的值應是不同的。default子句是可選的。break語句用來在執行完一個case分支後,使程式跳出switch語句,即終止switch語句的執行。在一些特殊情況下,多個不同的case值要執行一組相同的操作,這時可以不用break。

 

迴圈語句的作用是反覆執行一段代碼,直到滿足終止迴圈的條件為止。Objective-C語言中提供的迴圈語句有:

• while語句
• do-while語句
• for語句

• while語句,它的文法形式如下,其中“[]”中的部分可以省略。

[initialization]
  while (termination){
    body;
   [iteration;]
  }

• 下面代碼是計算1000以內的水仙花數。

int i = 100;int r, s, t;r = 0;s = 0;t = 0;while (i < 1000) {r = i / 100;s = (i - r * 100) / 10;t = i - r * 100 - s * 10;if (i == r * r * r + s * s * s + t * t * t) {NSLog(@" %i " , i);}i = i + 1;}

 

do-while語句,它的文法形式如下,其中“[]”中的部分可以省略。

[initialization]
  do {
    body;
   [iteration;]
} while (termination);

• 計算1000以內的水仙花數

int i = 100;int r, s, t;r = 0;s = 0;t = 0;do {r = i / 100;s = (i - r * 100) / 10;t = i - r * 100 - s * 10;if (i == r * r * r + s * s * s + t * t * t) {NSLog(@" %i " , i);}i = i + 1;} while (i < 1000);

for語句,文法形式如下:

for (initialization; termination; iteration){
    body;
}

下面代碼是計算0~8平方、立方數並輸出:

int i = 8;int r, s;r = 0;s = 0;for (int j = 0; j <= i; j++) {r = j * j;s = j * j * j;NSLog(@"整數為: %i 對應的平方和%i:對應的立方和:%i", j, i, s);}

 

在for迴圈語句的“()”內部一般有3條語句,initialization初始化語句,termination終止條件陳述式,iteration迭代語句,其中這3條語句都是可以省略的。例如把j的初始化放在迴圈體的外面,代碼如下:

int j = 0;for (; j <= i; j++) {r = j * j;s = j * j * j;NSLog(@"整數為: %i 對應的平方和%i:對應的立方和:%i", j, i, s);}

 

與程式轉移有關的跳轉有break, continue, goto語句,break和continue都主要與迴圈有,goto語句在C中就有,它是無條件跳轉可以完全替代break和continue,一般要慎用。

 

break語句在switch中使用過,用來終止switch語句的執行。break語句還可以用於迴圈體中,終止當前的迴圈,並緊跟該迴圈塊的第一條語句處執行。例如下面的程式碼片段:

for (int i = 0; i < 10; i++) {
if (i == 3)
break;
NSLog(@ " i =%i", i);
}
NSLog(@" Game Over!");

 

continue語句用來結束本次迴圈,跳過迴圈體中下面尚未執行的語句,接著進行終止條件的判斷,以決定是否繼續迴圈。對於for語句,在進行終止條件的判斷前,還要先執行迭代語句。例如下面的程式碼片段:

for (int i = 0; i < 100; i++) {
if (i % 10 == 0)
continue;
NSLog(@"%i", i);
}

 

goto語句是無條件跳轉,可以完全替代break和continue。如果是嵌套迴圈,可以使用goto語句指定標籤,來改變程式的流程,例如下面的程式碼片段。

for (int j = 0; j < 10; j++) {
for (int i = 0; i < 10; i++) {
if (i == 3)
goto label;
NSLog(@ " i =%i", i);
}
}
label:
NSLog(@" Game Over!");

 

在內迴圈中使用break和continue都只能跳出內迴圈,goto語句沒有這個限制,label:是標籤定義,goto語句後面要跟有標籤。

 

Objective-C語言控制語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.