全部问题 > 当前问题

这道题的CD选项中:(int)x%2和(int)(x)%2有什么区别

还有,C语言中,括号、四则运算和取余同时存在时运算顺序是怎样的呢

漫天小雨 2016-2-27 23:32:44

共 2 个回答

冷静 2016-2-27 23:35:31

不会


最佳答案

嘿嘿大人 2016-2-27 23:40:17

括号优先级最高,

blob.png

你问的这个两个本质是一样的,d是错在case后面接的是实数

问题来自: switch语句
若有定义语句int a,b;double x;则下列选项中没有错误的是 ______ 。
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中,x是double类型,不能做取余数运算。B中,(int)的优先级高于/,即(int)x/2.0中先运算(int)x将x转换为整型,再运算/2.0结果变回是浮点类型,case后面不能接实数。D中,case后面不能接实数。C中,是先把x转化成整型再对于2求余数。因此选C。