程序如下:
#include<stdio.h>
main(){
int i
short int y=0xD3 // 十六进制 数 D3
unsigned char x
x= (y &0xf0) >>4
printf("%1X:",x)
for (i=3i>=0i--) printf("%1d",(x>>i) &0x01)
for (i=3i>=0i--) printf("%1d",(x>>i) &0x01)
printf(" ")
x= y &0x0f
printf("%1X:",x)
for (i=3i>=0i--) printf("%1d",(x>>i) &0x01)
for (i=3i>=0i--) printf("%1d",(x>>i) &0x01)
return 0
}
如果你的D 编码同 4 ,自己换算一下:x = D-A+1
再套用 for (i=3i>=0i--) 。。。。
d1=(a<b)||(++a==5)||(c>b--)因为都是或运算,有一个为真,那么整个表达式都为真,a<b为真,所以后面的表达式程序都不会去管,所以d1 =1,a=4,b=8,c=5d2=(a>b)&&(++a==5)||(c>b--)先是与运算,一个为假那么就是假,a>b为假,所以&&(++a==5)不执行,后面是或运算,再判断,c>b--,也是假,0||0=0,所以d2=0,a=4,b=7,c=5
d3=(a<b)||(++a==5)&&(c>b--)因为&&的优先级高所以可以改写成(a<b)||((++a==5)&&(c>b--)),a<b为真,后面的不判断,所以d3=1,a=4,b=7,c=5
d4=(a>b)&&(++a==5)&&(c>b--)a〉b为假,后面的也不判断d4=0,a=4,b=7,c=5