首页 > 试题广场 >

下述赋值语句错误的是()。

[单选题]

下述赋值语句错误的是()。

  • a=(b=(c=2,d=3))
  • i++
  • a/b=2
  • a=a<a+1
推荐

选C

    A:
逗号语句是以最后一条为返回值的,语句等价于''c=2;a=b=d=3;",即"c=2;d=3;b=d;a=b;"是正确的
    B:
i++自增,即"i+=1;",也类似于赋值语句eg:
for(int i=1;i<=n;i++);
    C:
不能把一个返回值赋值,应为
a=b*2;//a=b<<1;
/*if(!b)*/a=2/b;

    D:

(a<a)是一个bool型的值,会被强制转化为int型,而(a<a)不可能,故必为false,转化为0+1后转化为a的数据类型并赋与a,等价于

bool a=true;
int/*long/long long/short*/ a=1;
char a=char(1);//一个笑脸

故选C

编辑于 2019-11-12 14:11:11 回复(2)
C
  • A选项为逗号表达式,即先算表达式1,后算表达式2,整个表达式为表达式2的值,所以原式可以分解为:c=2,b=d,d=3,a=b
  • B选项为单目自加运算,整合为i=i+1
  • C选项a/b为一个表达式,不可以被赋值为具体的数字。所以C错误
  • D选项根据运算符号优先级,先计算a+1,在计算>a为true,转为1,即a=1
发表于 2019-11-11 19:46:00 回复(1)
C赋值语句的等号左边应该是变量,不能是表达式。
A.由逗号表达式化简得a=b=d=3,即a=3。
B.i++等价于i=i+1。
D.赋值语句等号右面的表达式为真值,此处即为1,因此这里是将1赋值给变量a。
发表于 2019-11-11 16:10:53 回复(0)
/的优先级高于=,所以会先计算a/b,那么两边都是数据,这个赋值语句自然就错了
发表于 2022-05-12 08:43:24 回复(0)
D正确的前提是 a被赋值过吧……
发表于 2022-04-08 10:22:18 回复(0)
变量不能成为左值

发表于 2020-01-14 20:10:55 回复(0)
A选项,在Java环境即使是事先声明了abcd变量,也无法编译通过。
C选项在常用编程语言中均不合法
发表于 2019-11-13 10:28:14 回复(0)
C选项错误
不可以为一个表达式赋值
发表于 2019-11-12 17:17:14 回复(0)