【发布时间】:2021-12-16 05:36:03
【问题描述】:
我有以下代码
char c = 0xEE;
int color = 0xFF000000;
color += (int)c;
printf("%x\n", color);
我预计结果是 0xFF0000EE;但输出却是
-> feffffee
我错过了什么,我以为只是计算
(int)(0xFF << 24 + c << 16 + c << 8 + c);
会给 0xFFEEEEEE 但我得到 0
编辑:
以下代码似乎有效:
unsigned char c = 0xEE;
unsigned int color = 0xFF000000; /* full opacity */
color += (unsigned int)c;
color += (unsigned int)c << 8;
color += (unsigned int)c << 16;
printf("-> %x\n", color);
【问题讨论】:
-
使用
unsigned类型 -
请注意换档顺序的优先顺序。
+的优先级高于<<。 -
感谢您的回答