摘要: 现象&后果:当传入的参数p指向的内容为0x9A、0XAB等内容(最高位为1)时,得到的int型变量util的值将会出错,因为char会进行符号扩展,使得0x9A(十进制的154)变成了-102。会造成程序运行时的数据处理错误。分析:char符号扩展是与编译器相关的,但在x86平台上,对于任何主流的编译平台,char总是进行符号扩展的。上述代码在将char型的*p赋给int型变量util的时候,需要先进行char型到unsigned char型的转换,以避免按照char的最高位进行符号扩展。上述出错代码的符号扩展过程如下:因为要扩展的短数据类型为有符号数的-- char x=100111 阅读全文
posted @ 2013-04-16 16:29 E_star 阅读(1967) 评论(0) 推荐(0) 编辑