本文主要是介绍unsigned char 和 char,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:
char Buf[2048];
memset(Buf, 0, sizeof(Buf));
当用recv()接收数据到Buf时,Buf其中有个字节实际应该为Buf[5] = 0x9d, 但是printf()打印输出时是0xffffff9d,导致在处理数据时出错,当把char型改成unsigned char时就没有问题了。
原因可能是对方在发送时定义的为unsigned char 而我这边是用char型来接受的。导致类型默认转换溢出。因为0x9d的十进制是157,而一个char型的范围是-128——127,用来保存unsigned char(0-255)导致溢出。
这篇关于unsigned char 和 char的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!