首页 > 试题广场 >

下面哪个语句无法通过编译?

[单选题]
下面哪个语句无法通过编译?

  • if (x>y);
  • if (x=y) && (x!=0) x+= y;
  • if (x!=y) scanf("%d",&x); else scanf("%d",&y);
  • if (x<y) {x++; y++;}
if语句由一个布尔表达式和一个或多个语句组成 if (布尔表达式){ 执行语句 } B选项中的布尔表达式缺失括号,正确应为: if ((x=y) && (x!=0)) x+= y;
编辑于 2021-10-28 15:46:55 回复(0)
前面几个人的解答都不太对,其实是
if (x=y) && (x!=0) x+= y;//少了括号
if((x=y)&&(x!=0))

发表于 2018-05-05 21:04:44 回复(6)
【  =  】是赋值符号,【    ==     】才是判断符号
发表于 2020-09-24 19:03:06 回复(0)
if表达式中写成了复制语句是可以通过编译的,但是此题目中&&后面的语句并不是if语句的条件表达式,所以不能这样连接这两个语句
发表于 2018-04-09 09:13:11 回复(0)
x = y为赋值语句,不是判断语句。不能放在if的判断条件里
发表于 2018-03-09 11:04:43 回复(2)
进行语法分析时,if 与(x+y)直接生成语法树,后边&&无法成为语法树一部分;
若加了括号,if为主枝,括号内为分支,可以生成语法树。
发表于 2022-05-20 14:59:59 回复(0)
a中的";‘号没问题吗?
发表于 2020-12-17 21:54:14 回复(0)
选B是因为if没打括号,赋值语句在if中是可以正常执行的,只要x的值非0就为真。
发表于 2018-08-22 10:47:47 回复(2)
b
发表于 2018-02-25 09:00:44 回复(0)
=是赋值,==才是判断相等,经典问题了,
实际上B选项的问题在于if少了一个括号(没把条件都括起来)。
编辑于 2023-10-06 10:00:55 回复(0)
b选项缺少一个大括号把逻辑左右条件包含起来
发表于 2021-04-16 16:38:22 回复(0)

B选项条件表达式,赋值符号和等号混淆概念

发表于 2019-05-19 23:12:43 回复(0)
b:
  • if (x==y) && (x!=0) x+= y;
发表于 2018-03-08 00:02:49 回复(0)
b,需要把逻辑语句放在同一个括号内
发表于 2023-06-26 11:21:30 回复(0)
A选项没仔细看,应该是if为真,执行空语句
if (x>y)
;

发表于 2022-09-14 22:01:37 回复(0)
a为啥对,表示啥意思啊
发表于 2022-08-23 18:06:01 回复(0)
前面几个人的解答都不太对,其实是
if (x=y) && (x!=0) x+= y;//少了括号
1
if((x=y)&&(x!=0))
发表于 2022-05-06 18:45:15 回复(0)
if语句没有返回值,不能与&&连用,语法错误
发表于 2021-02-26 11:16:16 回复(0)
d 如果x<y,再执行不就陷入死循环了么,为什么对呀
发表于 2021-01-16 21:30:30 回复(1)
亲测,确实是应该在判断体加个括号,即if((x=y)&&(x!=0),否则编译不过去。至于具体语法原因,还需老哥们指教。
发表于 2019-01-11 21:41:04 回复(0)