读书人

一个char类型比较是否相同的有关问题

发布时间: 2013-08-13 16:43:28 作者: rapoo

一个char类型比较是否相同的问题,不解,请高手指点~~
用TCP接受数据:
char szBuf[1024] = {0};
int nRecv = recv(wp, (char *)szBuf, 1024 , 0);
char t=szBuf[1];
bool b=(t==0xa5);

接受到的是三个char类型数据,此时szBuf中存放三个数据{0x5a,0xa5,0x01}
但是用szBuf[0]和0x5a比较,结果是相等;但是用szBuf[1]和0xa5比较,结果竟然不相等!!

这是为什么?

TCP/IP
[解决办法]
unsigned char t = szBuf(1)
这样才行

[解决办法]

bool b=(t==0xa5)

0xa5不是char内型吧。
bool b=(t==(char)0xa5)
[解决办法]
chat t 和 0xa5在比较时候,两边的数据类型不一样,所以t被提升为整数类型进行比较
悲剧的是 chat t的值是0xa5,转换成整数是负的,所以当然不一样。
要用unsigned chat t ,比较的时候才不会变成负数

[解决办法]
整型提升,符号位1扩展

读书人网 >C++

热点推荐