早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于c语言的问题请各位看一下这两个简单的c语言问题:1)已知a=4,b=7,c=5.d=(a>b)||(++a==5)&&(c>b--),求d,a,b,c的值,还麻烦说一下整么算的?(答案给的是d=1,a=4,b=7,c=5)2)已知a=10,b=

题目详情
关于c语言的问题
请各位看一下这两个简单的c语言问题:
1)已知a=4,b=7,c=5.d=(a>b)||(++a==5)&&(c>b--),求d,a,b,c的值,还麻烦说一下整么算的?(答案给的是d=1,a=4,b=7,c=5)
2)已知a=10,b=15,c=14,temp=!a+b*c-b/a&&b-a*!(c-a)的temp的值。(答案是1)
▼优质解答
答案和解析
首先要说明一下,在逻辑表达式中,只有真假两个值,真就是非0的数,假即为0。
第1题,d=(a>b) || (++a==5) && ( c > b--)。
首先看(a>b),由a=4,b=7,可知,(a>b)为假,也就是说,值为0。
然后看(++a==5),先计算++a,由a=4,得++a的值为5,所以(++a==5)为真,值为1。
此时a=5。
再看(c最后看(a>b) || (++a==5) && ( c > b--)整体的值,由运算符优先级可知,&&的优先级要高于||,所以,应先计算(++a==5)&& ( c > b--)的值,经过之前的计算可以知道,该式值为真。
所以(a>b) || (++a==5) && ( c > b--)等于(a>b) || 1,也为真。于是d=1。如果此时再输出a,b,c,d的结果的话,应为a=5,b=6,c=5,d=1。
第2题 temp=!a+b*c-b/a&&b-a*!(c-a)。
先看(!a),由a=10即a为真,可知(!a)为假,值为0。
由(b*c-b/a)可知,(15*14 -15/10)不可能为0,所以为真,值为1。
再看(b-a*!(c-a)),(c-a)=4,为真,所以!(c-a)为假,值为0,
a*!(c-a)=a*0=0,b-a*!(c-a)=b-0=b=15,由b=15可知,值为真。
由(b*c-b/a)=1, ( b - a * !(c-a) )=1,可知( b*c - b/a ) && ( b - a * !(c-a) )=1。
由( !a )可知, ( !a ) + ( b*c - b/a ) && ( b - a * !(c-a) )=1,所以temp=1