gpt4 book ai didi

c - 无符号字符左移查询

转载 作者:行者123 更新时间:2023-11-30 16:43:35 25 4
gpt4 key购买 nike

我有一个问题。

#include <stdio.h>

int main()
{
unsigned char i = 0x80;
printf("%d\n",i<<1);
return 0;
}

在上面的程序中,unsigned char被分配为 0x80(即 128)。对于 i<<1 ,我得到的值是 256。我的疑问是 i = 1000 0000 二进制,但是怎么能 i<<1得到值256?为什么不是 0,因为 (1000 0000)<<1 1 会被淘汰?

最佳答案

如果变量的排名低于 int用于表达式中,例如 charunsigned char ,它被提升为int在计算表达式之前。

所以你的unsigned char值 0x80 转换为 int值 0x80 和 <<运算符应用于此。所以原来的高位不再是高位,所以它不会被移出。

关于c - 无符号字符左移查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134328/

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