一个基本c问题不解啊.为什么比较的结果都是不一样呢?
#include <stdio.h>void fun1(void)
{
char readbyte = 0;
char temp = 0;
readbyte = 0x93;
printf("------------------fun1\n");
if(readbyte & 0x80)
{
printf("aaaaaaaaaaaaaaaa\n");
readbyte = 0xc7;
temp = readbyte & 0x38;
printf("temp: %x\n", temp);
if(readbyte & 0x38 == 0x38)
{
printf("bbbbbbbbbbbbbbbbbbbb\n");
}
else
{
printf("cccccccccccccccccc\n");
}
}
}
void fun2(void)
{
char readbyte = 0;
char temp = 0;
readbyte = 0x93;
printf("------------------fun2\n");
if(readbyte & 0x80)
{
printf("aaaaaaaaaaaaaaaa\n");
readbyte = 0xc7;
temp = readbyte & 0x38;
printf("temp: %x\n", temp);
if(temp == 0x38)
{
printf("bbbbbbbbbbbbbbbbbbbb\n");
}
else
{
printf("cccccccccccccccccc\n");
}
}
}
int main(void)
{
fun1();
fun2();
return 0;
}
请看比较的if那里. fun1 fun2函数打印的结果不一样/ if(readbyte & 0x38 == 0x38)这一句,“==”的优先级比按位与“&”的优先级高,不啰嗦了。。。 楼上正解!这个 if(readbyte & 0x38 == 0x38)判断的只是readbyte的真假 {:sweat:}谢谢了!
页:
[1]