【发布时间】:2014-09-12 03:52:37
【问题描述】:
我有一个 80 元素 char 数组,我正在尝试将特定元素添加到 integer 并且遇到一些数字错误。
十六进制数组元素 40 是 0xC0。当我尝试将其分配给 integer 时,我得到了十六进制 0xFFFFC0,但我不知道为什么。
char tempArray[80]; //Read in from file, with element 40 as 0xC0
int tempInt = (int)tempArray[40]; //Output as 0xFFFFC0 instead of 0x0000C0
【问题讨论】:
-
因为
0XC0在char中为负数,并且演员将符号保留为int。 -
int tempInt = (int)tempArray[40];-->unsigned tempInt = (unsigned)tempArray[40];可以解决问题。