在c語(yǔ)言中,case的意思為“情況”、“案例”,是用于switch語(yǔ)句的關(guān)鍵字。“switch case”語(yǔ)句是一種選擇結(jié)構(gòu)的語(yǔ)句,允許測(cè)試變量與值列表的相等性,每個(gè)值稱(chēng)之為案例或者case;程序會(huì)檢查switch后面的值并且與case后面的值比對(duì),如果相等則執(zhí)行后面的代碼或代碼塊。
php入門(mén)到就業(yè)線(xiàn)上直播課:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用
本教程操作環(huán)境:windows7系統(tǒng)、c99、Dell G3電腦。
case中文是什么意思
作名詞意思是例子;情況;案例;(辯論或訴訟)論據(jù);箱。
作動(dòng)詞意思是裝箱;踩點(diǎn);仔細(xì)檢查。
c語(yǔ)言中的case
在c語(yǔ)言中,case的意思為“情況”、“案例”。case是用于switch語(yǔ)句的關(guān)鍵字。
switch case語(yǔ)句是一種選擇結(jié)構(gòu)的語(yǔ)句,用來(lái)代替簡(jiǎn)單的、擁有多個(gè)分枝的 if else 語(yǔ)句。
switch語(yǔ)句允許測(cè)試變量與值列表的相等性,每個(gè)值稱(chēng)之為案例或者case,程序會(huì)檢查switch后面的值并且與case后面的值比對(duì),如果相等則執(zhí)行后面的代碼或代碼塊
switch..case在C語(yǔ)言中的語(yǔ)法如下
switch(表達(dá)式){ case 整型數(shù)值1: 語(yǔ)句 1;[break;] case 整型數(shù)值2: 語(yǔ)句 2;[break;] ...... case 整型數(shù)值n: 語(yǔ)句 n;[break;] default: 語(yǔ)句 n+1;[break;] }
它的執(zhí)行過(guò)程是:
-
1) 首先計(jì)算“表達(dá)式”的值,假設(shè)為 m。
-
2) 從第一個(gè) case 開(kāi)始,比較“整型數(shù)值1”和 m,如果它們相等,就執(zhí)行冒號(hào)后面的所有語(yǔ)句,也就是從“語(yǔ)句1”一直執(zhí)行到“語(yǔ)句n+1”,而不管后面的 case 是否匹配成功。
-
3) 如果“整型數(shù)值1”和 m 不相等,就跳過(guò)冒號(hào)后面的“語(yǔ)句1”,繼續(xù)比較第二個(gè) case、第三個(gè) case……一旦發(fā)現(xiàn)和某個(gè)整型數(shù)值相等了,就會(huì)執(zhí)行后面所有的語(yǔ)句。假設(shè) m 和“整型數(shù)值5”相等,那么就會(huì)從“語(yǔ)句5”一直執(zhí)行到“語(yǔ)句n+1”。
-
4) 如果直到最后一個(gè)“整型數(shù)值n”都沒(méi)有找到相等的值,那么就執(zhí)行 default 后的“語(yǔ)句 n+1”。
注意:
-
switch語(yǔ)句中使用的表達(dá)式必須具是int或enum類(lèi)型,否則如float等其他數(shù)據(jù)類(lèi)型是無(wú)法通過(guò)的編譯的,因?yàn)榫幾g器需要switch后面的語(yǔ)句和case后面的值精確匹配,而計(jì)算機(jī)無(wú)法精確表達(dá)一個(gè)float數(shù)據(jù)類(lèi)型
-
switch可以任意個(gè)case語(yǔ)句(包括沒(méi)有), 值和語(yǔ)句之間使用:分隔
-
case后面的值必須是int常量值,或者返回結(jié)果為int類(lèi)型的表達(dá)式,以下代碼無(wú)法編譯通過(guò)
switch (1) { case 1.1: break; }
int a; scanf("%d", &a); switch (a) { case a + 1: break; }
-
當(dāng)switch后面的變量值和case后面的常量值匹配相等后,case后面的代碼將會(huì)被執(zhí)行,直到break語(yǔ)句被執(zhí)行后跳出switch代碼塊
-
break不是必須的,如果沒(méi)有break,則執(zhí)行完當(dāng)前case的代碼塊后會(huì)繼續(xù)執(zhí)行后面case代碼塊的內(nèi)容,直到執(zhí)行break才可以退出
-
switch有一個(gè)默認(rèn)的情況,我們用default關(guān)鍵詞表示,當(dāng)switch后面的變量和所有case后面的常量都不匹配的情況下,默認(rèn)執(zhí)行default后面的語(yǔ)句
示例1:
#include <stdio.h> int main () { /* local variable definition */ char grade; scanf("%d", &grade); switch(grade) { case 'A' : printf("Excellent!n" ); break; case 'B' : case 'C' : printf("Well donen" ); break; case 'D' : printf("You passedn" ); break; case 'F' : printf("Better try againn" ); break; default : printf("Invalid graden" ); } printf("Your grade is %dn", grade ); return 0; }
示例2:
#include <stdio.h> int main() { printf("Please input your grade(1-100):"); int grade; scanf("%d", &grade); switch (grade / 10) { case 10: case 9: printf("An"); break; case 8: case 7: printf("Bn"); break; case 6: case 5: printf("Cn"); break; default: break; } return 0; }