首页 > 试题广场 >

下面的C函数省略了 switch语句的主体。在C代码中,情况

[问答题]
下面的C函数省略了 switch语句的主体。在C代码中,情况标号是不连续的,而有些情况有多个标号。void switch2(long x, long *dest) { 
long val = 0; 
switch (x) {
Body of switch statement omitted
}
*dest = val;
}

在编译该函数时,GCC为程序的初始部分生成了以下汇编代码,变量x在寄存%rdi中:

void switch2(long x, long *dest) 
x in %rdi
switch2:
  addq $q,%rdi
  cmpq $8,%rdi
  ja   .L2
  jmp  *.L4(,%rdi,8)
为跳转表生成以下代码:
.L4:
.quad  .L9
.quad  .L5
.quad  .L6
.quad  .L7
.quad  .L2
.quad  .L7
.quad  .L8
.quad  .L2
.quad  .L5

根据上述信息回答下列问题:

A. switch语句内情况标号的值分别是多少?

B.C代码中哪些情况有多个标号?


这道题你会答吗?花几分钟告诉大家答案吧!