gpt4 book ai didi

c - 字符中的位运算

转载 作者:行者123 更新时间:2023-12-02 16:21:16 29 4
gpt4 key购买 nike

我很好奇 C 在字符上的按位运算符的行为。

#include <stdio.h>

int main()
{
int x = 108;
x = x<<1;
printf("%d\n", x);
char y = 108;
y = y<<1;
printf("%d", y);
//printf("%d", y<<1);

return 0;
}

在这里,如果我这样传递,y = y<<1,它的输出是-40,当我直接打印它时,

printf("%d", y<<1);

它的输出是 216

我如何模拟它?

最佳答案

注意这里真的没有<<char 上操作类型 - << 的操作数被提升为(至少)int类型,结果同样是一个 int .

所以,当你做 y = y << 1 , 你正在截断 int运算结果到 a(有符号)char ,它保留了最高有效位(符号位)设置,因此它被解释为负值。

然而,当你通过 y << 1 直接printf , 结果 int保持不变。

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

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