C语言 若有定义语句int a,b;double x;则下列选项中没有错误的是?选C?若有定义语句int a,b;double x;则下列选项中没有错误的是?选C?switch(expr1)中,expr1只能是byte short int char类型.其他的类型不行A)switch(x%2) {case 0:a++; break; case 1:b++; break; default :a++; b++; } B)switch((int)x/2.0{case 0:a++; break;case 1:b++; break;default :a++; b++;}C)switch((int)x%2) {case 0:a++; break; case 1:b++; break; default :a++; b++; } D)switch((int)(x)%2){case 0.0:a++; break;case 1.0:b++; break;default :a++; b++; }

问题描述:

C语言 若有定义语句int a,b;double x;则下列选项中没有错误的是?选C?
若有定义语句int a,b;double x;则下列选项中没有错误的是?选C?
switch(expr1)中,expr1只能是byte short int char类型.其他的类型不行
A)switch(x%2)
{case 0:a++; break;
case 1:b++; break;
default :a++; b++;
}
B)switch((int)x/2.0
{case 0:a++; break;
case 1:b++; break;
default :a++; b++;
}
C)switch((int)x%2)
{case 0:a++; break;
case 1:b++; break;
default :a++; b++;
}
D)switch((int)(x)%2)
{case 0.0:a++; break;
case 1.0:b++; break;
default :a++; b++;
}

是的选c,A)switch(x%2) 中的x没有保证是整数而%要求两边都必须是整数
B)switch((int)x/2.0中()优先级高于/得到的数并不是整数而是浮点数
D)switch((int)(x)%2)
{case 0.0: a++; break;
case 1.0: b++; break;
default : a++; b++;
}中case0.0这数字类型以上面int不同希望对你有帮助