求C语言题,我是初学者,请讲详细点
发布网友
发布时间:2023-08-09 05:58
我来回答
共6个回答
热心网友
时间:2023-10-02 11:51
A)x=y==5;
// 正确,x=y==5等价于x=(y==5), ==号是判断两端是否相等,若右边等于左边,则y==5表达式的值为1,若不等,则为0,假如相等,就等于说把1赋值给了x,若不等就是说把0赋值给x。=号是赋值,右边的值给左边,==是判断,右边是否等于左边。==的优先级高于=,故先算==再=。故x=y==5同等于 x=(y==5);
B)x=n%2.5;
//错误,%是模除符号,就是求余数用的,用这个符号,两边必须是整型,说白了两边都得是整数,不能是小数。
C)x=n=1
//很明显,缺少分号,一个语句的最基本要求就是,以分号结束。如果做为一个表达式是合法的,x=n=1同等于 x=1,n=1;
D)x=5=4=1;
//错误,赋值的最基本要求,被赋值的一定是变量,不能是常量,也就是说左边是变量,右边可以是常量,或者已经被赋值的变量, 因为5 4 都不是变量,故错误。
热心网友
时间:2023-10-02 11:51
B错 取余运算要求两侧操作数均为整型
C错 少了分号是表达式,不是语句。 作为表达式是合法的
原因是从右运算 把1赋给n n的值变为1 而n=1这个表达式的值又是1 再赋给x
D错 左值必须是变量 不能是常量
热心网友
时间:2023-10-02 11:52
C少了分号
A的话等价于x=(y==5);
如果y==5为真的话,也就是y的值为5,则x的值为1,否则x为0追问关于x=(y==5)
请详解一下
热心网友
时间:2023-10-02 11:52
==优先级高于= 所以A等于 x=(y==5) 比较y和5结果赋给x
==是比较
热心网友
时间:2023-10-02 11:53
首先A里面“==”是在判断符号两端的值是否相等,相等为1,不等为0,比如(1==1)的值为1,(1==2)的值为0,所以A是把y与5 的值进行判定后赋给x,是对的;
B里面%是求余数,两端都应当是int型;
C少了分号,加上分号作为表达式就合理
D5=4=1这种用法本来就错了。单个的“=”是赋值的意思,如果改成x=5==4==1;的话就对了
“==”同级,所以从左往右计算,5==4得出值为0,然后0==1得出值为0,最后把0赋值给x
热心网友
时间:2023-10-02 11:54
记住==是判断,=是赋值。%求余,两边均是整数。赋值左边是变量右边是常量