首页 > 试题广场 >

下列表达式中,不合法的是?

[不定项选择题]
下列表达式中,不合法的是()
已知:double d = 3.2; int n = 3;
  • d<<2;
  • d/n
  • !d && (n-3)
  • (d-0.2)|n
推荐
AD
浮点数和位运算:所有的位运算都不能直接操作浮点数,这就是A和D错的原因,但是,我们可以间接对浮点数进行位运算,例如,将float数据,取地址(&)强行转化为整型(int等)指针后,再取值(*)后赋值给整型变量(int等),然后就能对该变量进行位运算了。
【注】对浮点数进行位运算,一般没什么意义,因为浮点数的存储结构分三部分,进行过位运算后,所得结果跟原始浮点数没多大关系。
B.d/n:在运算前,系统会自动把两个操作数转化为精度较高的那个数据类型,这里会自动将n转化为double类型,然后在进行运算;
C.!d&&(n-3):逻辑运算符非(!)、与(&&)、或(||),操作数可以是任何基本数据类型,因此此表达式合法,可以正常运行。
编辑于 2016-01-20 10:47:19 回复(0)
1.所有的位运算都不能 直接 操作浮点数
2. B.d/n: 在运算前,系统会自动把两个操作数转化为精度较高的那个数据类型,这里会自动将n转化为double类型,然后在进行运算;
C.!d&&(n-3):逻辑运算符非(!)、与(&&)、或(||),操作数可以是任何基本数据类型,因此此表达式合法,可以正常运行。
编辑于 2016-03-30 00:32:04 回复(0)
A和D么?double不能位操作
发表于 2014-11-07 15:25:48 回复(0)

(1)float、double、long double等类型不允许直接进行位与操作符啊,可用间接的方法变通,如float取地址(也是&符号)转换为unsigned int类型,再用取值操作符(*),这样编译器会以为是unsigned int类型。

(2)使用int、short、long移位时最好加上unsigned,这样就是汇编中逻辑移位(即全部移位),如果不加unsigned情况就较为复杂,正数全是逻辑移位,负数左移时保持符号位为1、右边补0,负数右移时保持符号位为1,左边补1,所以-1不管怎么右移都是-1。

(3)位与操作符就是将两个数进行与操作,&0x01就相当于掩码取出最后一位,其他位置成0

(4)位与操作符&的操作优先级小于移位操作符,但移位操作符小于取地址操作符&(取值操作符*),所以上面代码不会出错

编辑于 2015-06-23 17:29:13 回复(0)
浮点数每一位都有特殊意义,位操作直接改变其本质,位操作无意义
发表于 2015-06-11 17:56:27 回复(0)
难道题目改动过??? A中的d作为一个表达式完全合法,非零即真!
发表于 2017-10-17 18:26:44 回复(0)
A选项的d为什么错了
发表于 2022-04-01 23:33:21 回复(0)
|是按位取或,位运算对浮点数不能操作。<<是按位移动,也不能操作
发表于 2017-02-25 17:57:27 回复(0)
C选项存在争议
在C/C++中,基本数据类型(都可以表示为0或非0)都可以进行逻辑运行,结果为0(false)或1(true)。
在Java中,只有布尔类型(boolean,取值为false或true)才可以进行逻辑运算,结果为false或true。
所以,C选项在C/C++中是合法的,在Java中非法的。
发表于 2017-02-10 00:19:31 回复(1)
非整数类型(如float、double)的值不能作为位运算操作数。
发表于 2023-10-17 14:31:32 回复(0)
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
 The operator ! is undefined for the argument type(s) double
在eclipse中测试,C选项是不合法的

发表于 2016-02-21 09:21:35 回复(1)
为啥是AD…
发表于 2022-11-13 21:51:02 回复(0)
单独一个d也存在位操作吗?
发表于 2022-10-11 11:13:44 回复(0)
A有什么问题
发表于 2022-08-16 00:08:03 回复(0)
AD error: invalid operands to binary expression ('double' and 'int')
发表于 2022-05-27 11:42:50 回复(0)
很懵逼。。可能题意理解不对,然后看评论区也懵, 哪位大佬讲解一下为啥选AD.
发表于 2022-04-14 00:02:45 回复(0)
Operator '!' cannot be applied to 'double'
发表于 2020-11-04 16:11:20 回复(0)
不能对浮点数进行位操作。
发表于 2016-06-03 19:36:04 回复(0)
浮点型不能进行位操作所以<<和|是错的。
发表于 2015-09-03 17:35:26 回复(0)
!可以吗
发表于 2015-08-09 16:48:20 回复(0)