gpt4 book ai didi

c - C中的左移运算符

转载 作者:太空狗 更新时间:2023-10-29 14:50:23 25 4
gpt4 key购买 nike

考虑:

#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,请使用:

(a<<4) & 0xff

0x59 是一个 int 并且可能在您的平台上它有 sizeof(int)==4。然后是 0x00000059。将其左移 4 位得到 0x00000590

此外,在处理按位运算符时养成使用unsigned int 类型的好习惯,除非您知道自己在做什么。他们在右移等情况下有不同的行为。

关于c - C中的左移运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com