加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 256如何存储在char变量和unsigned char中

发布时间:2020-12-16 10:34:12 所属栏目:百科 来源:网络整理
导读:高达255,我可以理解整数是如何存储在char和unsigned char中的; #includestdio.hint main(){ unsigned char a = 256; printf("%dn",a); return(0);} 在上面的代码中,对于unsigned char和char,我的输出为0. 对于256我认为这是整数存储在代码中的方式(这只是猜
高达255,我可以理解整数是如何存储在char和unsigned char中的;

#include<stdio.h>
int main()
{
        unsigned char a = 256;
        printf("%dn",a);
        return(0);
}

在上面的代码中,对于unsigned char和char,我的输出为0.

对于256我认为这是整数存储在代码中的方式(这只是猜测):

第一个256转换为二进制表示,即100000000(总共9位).

然后他们删除删除最左边的位(设置的位),因为char数据类型只有8位内存.

因此它在内存中存储为00000000,这就是为什么它的打印0作为输出.

猜测是否正确或有任何其他解释?

解决方法

你的猜测是正确的.转换为无符号类型使用模运算:如果值超出范围(太大或负),则以2N为模减少,其中N是目标类型中的位数.因此,如果(通常情况下)char具有8位,则该值以256为模减少,因此256变为零.

请注意,没有此类规则可转换为签名类型 – 超出范围的值会提供实现定义的结果.另请注意,char未指定为正好8位,并且在较不主流的平台上可能更大.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读