int a=1,b=2,c=3,d=4; if((a=2)&&(b=1)) c=2; if((c==3)||(d=-1)) a=5; 输出a,b,c,d

来自:    更新日期:早些时候
C语言, int a=1,b=2,c=3,d=4; if((a=2)&&(b=1)) c=2;~

int a=1,b=2,c=3,d=4;
if((a=2)&&(b=1)) c=2;
a=2表示赋值2给a,同时检查结果2是不是真, 当然是,所以又检查b=1,
b=1 同上,结果也是真,所以执行c=2;

if((c==3)||(d==-1)) a=5;
c=2!=3 ,d=4!=-1,所以不执行a=5;

printf("%d,%d,%d,%d
",a,b,c,d);
正确结果为:2 1 2 4

如果你的答案是5 1 2 -1,则说明你if((c==3)||(d==-1)) a=5;这句写错了,
应该是if((c==3)||(d=-1)) a=5; 是d=-1不是d==-1
c=2!=3为假,因为是||或关系,所以会再判断d=-1,-1非0为真,会执行a=5
这样结果为
a=5 b=1 c=2 d=-1

a>b?a:cb?a:(cb就返回a,否则就返回cb?a:3 如果a>b就返回a,否则返回3. 明显ab?a:3

希望采纳

答案是 5 1 2 -1

首先,if((a=2)&&(b=1)) c=2;

a=2这是赋值语句,不是比较语句,成功赋值,表达式为真,b=1同理,所以if为真,执行c=2

此时,a=2,b=1,c=2

然后,if((c==3)||d=-1) a=5;

c值为2,c!=3,执行d=-1,if为真,执行a=5

此时a=5,b=1,c=2,d=-1

验证:



int a=1,b=2,c=3,d=4; if((a=2)&&(b=1)) c=2; if((c==3)||(d=-1)) a=5;

if((a=2)&&(b=1)) 条件是赋值表达式,所以都能成功且a = 2; b = 1,c=2
if((c==3)||(d=-1)) a=5 因为c==3成立,不需要执行d=-1。所以a = 5,d=4
所以结果是 5 1 2 4

答案应该是5,1,2,-1吧
如果是
int a=1,b=2,c=3,d=4; if((a=2)||(b=1)) c=2; if((c==3)&&(d=-1)) a=5
答案才是2,2,2,4

if((a=2)&&(b=1)) c=2;这一句,a=2,而不是a==2,所有执行
a=2,b=1,c=2。是赋值语句。


int a=1,b=2,c=3,d=4; if((a=2)&&(b=1)) c=2; if((c==3)||(d=-1)) a=5; 输出a,b,c,d视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网