C/C++关键字之case

case关键字用在switch语句中,表示多条件语句的一个分支入口。C++本着高效原则,在编译器为每个分支生成代码时,不会生成相应的跳转代码跳出当前分支,除非程序员显式的使用break语句。这样,C/C++编译器尽量少生成额外代码,将控制权留给程序员。虽然程序员的负担加重了,可这换来了程序运行时的高效性。程序员可以利用这点,实现case语句的直通。如果程序中确实需要这种直通式的分支,强烈建议程序员在分支后面加上必要的注释,以防止维护人员意外的加上break语句。另外要注意的是,case语句后面必须是一个在编译期间能够确定的整型常量(或可转换为整型常量)的值。下面给出一段C语言程序及与其对应的IBM-PC的汇编代码,通过对这段代码的分析,可以看出break,case及switch语句如何在C/C++中实现的,以及这种实现方式所带来的高效性、简洁性,同时也能明白为什么在case语句后应该是一个在编译期间能够确定的整型常数。

switch (e)

{

case 1:fun1();

case 2:fun2();break;

case 3:fun3();

default:fun4();

};

对应的IBM-PC汇编代码如下:

cmp e,1

je case1

cmp e,2

je case2

cmp e,3

je case3

jmp default

case1:

call fun1

case2:

call fun2

jmp endswitch

case3:

call fun3

default:

call fun4

endswitch:

…………

常与该关键字一起使用的关键字有switch, default, break。

原文链接:,转发请注明来源!