全部问题 > 当前问题

(int)(x)%2和int(int)x%2有什么区别 能告诉我吗,老师

刘云鹏 2016-2-1 22:24:48

共 9 个回答

嘿嘿大人 2016-2-2 14:39:28

你确定后面是两个int?

刘云鹏 2016-2-2 18:50:47

回复 嘿嘿大人:应该是(int)(x)%2和int x%2  这是不是没区别

嘿嘿大人 2016-2-2 18:55:24

回复 刘云鹏:应该是没有啥区别的,因为强制类型转换的优先级比加减乘除都要高,所以都应该是把x先强制转换为int类型,然后执行取余运算

刘云鹏 2016-2-2 18:59:11

回复 嘿嘿大人:好吧  这个编写程序的题这么做 我不会是不是必须用C++软件做?还有这么输出结果 这么输入。。。


嘿嘿大人 2016-2-2 19:12:50

回复 刘云鹏:选择题不能用软件,因为考试的时候做选择题是把键盘屏幕锁定了的,不能用软件的,只能用笔一步一步写出来

刘云鹏 2016-2-2 19:26:50

回复 嘿嘿大人:我说的是编写程序那大题

嘿嘿大人 2016-2-2 19:33:22

回复 刘云鹏:我在群里面的文件里面说了做题步骤的啊,肯定要用软件做的,改错和填空都可以不用软件,唯独编程题必须要用软件做

刘云鹏 2016-2-2 19:38:01

回复 嘿嘿大人:群号多少我加一下

嘿嘿大人 2016-2-2 19:52:45

回复 刘云鹏:你直接群搜索科举网,等级最高的就是了

blob.png

问题来自: 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。