首页 > 试题广场 >

请阅读以下程序: int main() {

[单选题]
对于下面程序
int main() {
    int a=5,b=0,c=0; 
    if (a=b+c) printf ("***\n"); 
    else  printf("$$$\n"); 
    return 0;
} 
说法正确的是()
  • 有语法错不能通过编译
  • 可以通过编译但不能通过连接
  • 输出***
  • 输出$$$
推荐

【解释】if后面的表达式可以是任何类型的表达式,当然可以是赋值表达式,所以答

AB是错误的,因赋值表达式的值为0(即为假),所以执行else后的语句,输出$$$

故正确答案是D

发表于 2018-05-06 22:10:24 回复(2)
11n头像 11n
赋值表达式的值,就是赋值后变量的值,所以a=0+0,为0
发表于 2018-08-15 18:46:07 回复(0)

都没有#include<stdio.h>,是怎么通过编译和运行的??

发表于 2019-03-07 09:26:30 回复(3)

此处,先讲b+c的值赋给a,然后判断a

发表于 2018-08-05 11:04:03 回复(0)
这题是有坑的,a被赋值为0后,条件语句就会判定为假,会执行else语句!!!
发表于 2023-11-19 22:51:34 回复(0)
有没有可以讲讲这个和a==b+c的区别
发表于 2023-01-10 20:25:39 回复(1)
是赋值表达式的值,还是这个表达式执行成功
发表于 2021-02-14 09:11:46 回复(0)
你现在不给我整没头文件包含也能通过是吧,
发表于 2023-10-13 20:09:05 回复(0)

if后面的表达式可以是任何类型的表达式,当然可以是赋值表达式,所以答

AB是错误的,因赋值表达式的值为0(即为假),所以执行else后的语句,输出$$$


发表于 2022-06-10 17:42:36 回复(1)
a=b+c=0,将0赋值给a,条件为假,执行else语句的内容
发表于 2022-04-07 09:36:37 回复(0)
if(a=0+0)→if(flase) 则跳到else 输出
发表于 2022-01-11 03:57:25 回复(0)
因赋值表达式的值为0(即为假),所以执行else后的语句,输出$$$。
发表于 2021-11-11 08:15:28 回复(0)
if后面的表达式可以是任何类型的表达式,当然可以是赋值表达式
发表于 2020-12-28 09:53:51 回复(0)
不只没有#include<stdio.h>,void也没有返回值,怎么可以

发表于 2019-05-21 19:21:35 回复(1)