帮忙解一道C语言题!谢!

来源:百度知道 编辑:UC知道 时间:2024/06/10 14:46:04
有以下程序
main()
{int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是
A) 0,0 B) 0,1 C) 1,0 D) 1,1
是c还是D。。。要说明呀!!!谢!!

a=1
b=2
m=0
n=0
//初始化
-------
n=b>a // 【b>a】 的逻辑值与 n 相等
|| // 逻辑运算符 【or】【或】
m=a<b // 【a<b】 的逻辑值与 m 相等
//其中前者为真,k的值为【1】(即【true】)
-------
k=1
m=0
//答案【C】
-------
对不对啊??

选c //当 n判断为1以后,后面就不会判断了,直接k =1

n = 1 , m = 0

k = 1

D
b>a true 所以n=1
a<b true 所以m=1
n或m 所以k=1
我也是刚学的

绝对选C,小于号的优先级别大于附值号
b>a为真,n=1,||为或所以后面不做判断,m保持初值为0,k=1

k=(n=b>a)||(m=a<b);
b>a true
n=true;
k=true;
a<b true;
m=true;
k=m=1=true;

弄清楚运算符的优先级,我也是初学的。但是楼上分析错误哦