关于c语言的问题请各位看一下这两个简单的c语言问题:1)已知a=4,b=7,c=5.d=(a>b)||(++a==5)&
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 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