zbazba 发表于 2013-12-16 14:50:23

一个基本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函数打印的结果不一样/

liniuer 发表于 2013-12-16 15:49:08

if(readbyte & 0x38 == 0x38)这一句,“==”的优先级比按位与“&”的优先级高,不啰嗦了。。。

huangyiting1990 发表于 2013-12-16 16:03:39

楼上正解!这个   if(readbyte & 0x38 == 0x38)判断的只是readbyte的真假

zbazba 发表于 2013-12-16 17:27:17

{:sweat:}谢谢了!
页: [1]
查看完整版本: 一个基本c问题不解啊.为什么比较的结果都是不一样呢?