永发信息网

用无符号数输出,为什么答案是4294967295,char只有一个字节,int 4个,到底是怎么存储的啊

答案:4  悬赏:50  手机版
解决时间 2021-02-03 07:05
#includevoid main(){ char b=-257; printf("%u",b);}
最佳答案
VC6下,结果4,294,967,295

-257
4字节的二进制表示
1111 1111 1111 1111 1111 1110 1111 1111

由于char只有1字节,所以只存储低八位的数据
也就是
1111 1111

然后你又要以无符号整型输出,由于最高位为1,char一般编译器是做signed char处理的,所以高位扩展的话,就是
1111 1111 1111 1111 1111 1111 1111 1111
32个1,对应的无符号数是4,294,967,295

但是如果代码改成
#include<stdio.h>
void main()
{
unsigned char b=-257;
printf("%u",b);
}

其结果就是255

为了让lz更好地理解,发个文章给lz,地址不能直接打在知道里,容易被HX,所以发到lz消息里了
全部回答
这个是因为C语言编译中的字节对齐。 (假设int为4字节,char为1字节) struct X { int a; char b; int c; }; printf("%d,", sizeof(struct X)); struct Y { int a; char b; int c; char d}; printf("%d\n", sizeof(struct Y)); 这个代码会输出什么? a) 9,10 b)12, 12 c)12, 16 答案是C,我想,你一定知道字节对齐,是向4的倍数对齐。 但是,你知道为什么要字节对齐吗?还是因为性能。因为这些东西都在内存里,如果不对齐的话,我们的编译器就要向内存一个字节一个字节的取,这样一来,struct X,就需要取9次,太浪费性能了,而如果我一次取4个字节,那么我三次就搞定了。所以,这是为了性能的原因。 但是,为什么struct Y不向12 对齐,却要向16对齐,因为char d; 被加在了最后,当编译器计算一个结构体的尺寸时,是边计算,边对齐的。也就是说,编译器先看到了int,很好,4字节,然后是 char,一个字节,而后面的int又不能填上还剩的3个字节,不爽,把char b对齐成4,于是计算到d时,就是13 个字节,于是就是16啦。但是如果换一下d和c的声明位置,就是12了。 完整文章参阅我的百度空间。下面&
这个是因为C语言编译中的字节对齐。 (假设int为4字节,char为1字节) struct X { int a; char b; int c; }; printf("%d,", sizeof(struct X)); struct Y { int a; char b; int c; char d}; printf("%d\n", sizeof(struct Y)); 这个代码会输出什么? a) 9,10 b)12, 12 c)12, 16 答案是C,我想,你一定知道字节对齐,是向4的倍数对齐。 但是,你知道为什么要字节对齐吗?还是因为性能。因为这些东西都在内存里,如果不对齐的话,我们的编译器就要向内存一个字节一个字节的取,这样一来,struct X,就需要取9次,太浪费性能了,而如果我一次取4个字节,那么我三次就搞定了
LZ 知道char类型是一个字节,那么即由8位 一个char类型对应能存储的值范围是-128~127 而char b = -257;//这样赋值的结果溢出,输出为2^32次方值,即为默认的无符号占四个字节的int类型所能存储的最大值。其和编译器对齐有关系
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东航客票的有效期是如 何计算的?
昱辰美甲怎么去啊,我要去那办事
顺意家常菜馆地址在什么地方,想过去办事
一台电脑和一台电视需要装宽带多少g
攻城掠地113张飞怎么过 百度
中国联通嘉兴南汇营业厅怎么去啊,有知道地址
血叔的意思是什么啊?知道的请说下!
想知道: 中国 g1是什么路g102又是什么路 在哪
农村商业银行ATM(珊溪信用社)地址在哪,我要
案时的意思是什么啊?知道的请说下!
【两个仓库,甲仓存粮比乙仓少5分之2吨,从乙仓
芭比美地址在什么地方,想过去办事
“穿针引线”论坛不能看里面的资料怎么解决?
长江国际·青年城西门(人行门)在什么地方啊,
我想问一个男友与女友在一起,男友说想要与女
推荐资讯
伊佳人美容养生馆地址有知道的么?有点事想过
稳压电路里的电容选多大的
改步改玉的意思是什么啊?知道的请说下!
G7/X017(路口)这个地址在什么地方,我要处理
从濮阳到郑州出租车大概要多少钱?
哈尔滨 有试药的么?怎么联系?
中国龙工在哪里啊,我有事要去这个地方
牡丹江有什么酒吧 每人最低消费是多少的?
写一种花仿写荷花作文153个字
电笔的意思是什么啊?知道的请说下!
手机如何用电脑的网络
windows7开机画面修改为视频
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?