代码如下:
int main() {
// your code goes here
int val = 0x18;
int val1 = val&0xf + ((val>>4)&0xf)*10;
printf("%d %d\n",val1,val1&0x3f);
return 0;
}
我陷入了一个循环或某些我无法解决的问题。我的手工制作,一步一步计算将结果置于0x12,即18D,但我尝试了2个编译器,打印输出始终为0x18。
为什么?
我计算的最后一步是8 + 10 = 18?
答案 0 :(得分:2)
int val1 = (val&0xf) + ((val>>4)&0xf)*10
在val&0xf
周围添加括号,检查c运算符优先级以获取详细信息。
如果您想要十六进制格式,请使用printf("%x", ...)