【发布时间】:2010-09-26 13:33:11
【问题描述】:
unsigned char ascii; int a = 0; char string[4] ="foo"; "A1" ascii = (string[a] - 'A' + 10) * 16;
警告:转换为“无符号字符” from ‘int’ 可能会改变它的值
gcc 似乎默认将字符和数字文字视为 int。我知道我可以将表达式强制转换为 (unsigned char) 但如何将 char 文字和数字文字指定为 8 位而不进行强制转换?
类似的问题:
默认情况下,文字分数被视为双精度,但可以通过以下方式将它们指定为浮点数:
3.1f
因此,3.1 将被视为浮点数而不是双精度数。
【问题讨论】:
-
警告不是因为你的文字的大小,而是因为这个特定表达式的结果不太可能适合
unsigned char。 -
@R: 并非如此,将“foo”修改为“A1”会使 ascii 160 在 0 - 255 范围内。我仍然收到同样的警告。