【发布时间】:2020-01-07 11:39:59
【问题描述】:
考虑:
#include <stdio.h>
#define macro(a) a=a<<4;
main()
{
int a = 0x59;
printf("%x", a);
printf("\n");
macro(a)
printf("%x", a);
}
对于上面的代码,我得到以下输出:
59
590
为什么我没有得到以下输出作为左移操作?
59
90
【问题讨论】:
-
那么你能告诉我我应该怎么做才能得到输出为 90..我需要将最后 4 位移动到前 4 位,在末尾添加 0。
-
如果您希望它只是 2 个十六进制数字,请尝试将
a更改为unsigned char而不是int。 -
左移4相当于将数字乘以2、4倍。即 59 * 2 * 2 * 2 * 2 = 590(以 16 为基数)。你的输出是正确的。
-
#define 宏(a) a=a