|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ char -128的整型提升为什么和一般的不一样?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
689
人关注过本帖
标题:
char -128的整型提升为什么和一般的不一样?
只看楼主
加入收藏
coter123
等 级:
新手上路
帖 子:4
专家分:0
注 册:2023-2-18
结帖率:
0
楼主
收藏
已结贴
√
问题点数:20 回复次数:4
char -128的整型提升为什么和一般的不一样?
char a= -128;
printf("%u",a);
-128 补码:10000001
整型提升后应是:11111111 11111111 11111111 10000001
=4294967169
系统算出来却是4294967168
把char类型换成short,结果也是这个
为什么呢?麻烦大佬解释下
搜索更多相关主题的帖子:
short
整型
结果
char
类型
2023-02-18 12:45
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9025
专家分:54030
注 册:2011-1-18
第
2
楼
收藏
得分:7
首先 char 是否 具符号 属于 实现定义。一般而言,vc默认char具符号,gcc默认char无符号。
从你的现象来看,你用的是 char具符号 的编译器。
要尽量保证 负值的char 在进行类型提升后 它的值依然保持不变,那么 10000000(8bits的具符号类型,值-128) 变为 11111111 11111111 11111111 10000000(32bits的具符号类型,值-128) 有什么不对?
你的问题在于,把 -128(signed int)强制转化成 unsigned int 类型,那么 11111111 11111111 11111111 10000000 当成 无符号整型看待,它就是 4294967168,也没有什么不对
总之,你应该用
char a= -128;
printf("%d",a);
而不是 %u
2023-02-18 16:27
举报帖子
使用道具
赠送鲜花
coter123
等 级:
新手上路
帖 子:4
专家分:0
注 册:2023-2-18
第
3
楼
收藏
得分:0
回复 2楼 rjsp
好的,谢谢!
2023-02-19 08:46
举报帖子
使用道具
赠送鲜花
laike23
等 级:
新手上路
帖 子:1
专家分:7
注 册:2023-2-20
第
4
楼
收藏
得分:7
2023-02-20 15:45
举报帖子
使用道具
赠送鲜花
forever74
来 自:CC
等 级:
版主
威 望:
58
帖 子:1694
专家分:4282
注 册:2007-12-27
第
5
楼
收藏
得分:7
以下是引用
rjsp
在2023-2-18 16:27:05的发言:
首先 char 是否 具符号 属于 实现定义。一般而言,vc默认char具符号,gcc默认char无符号。
从你的现象来看,你用的是 char具符号 的编译器。
要尽量保证 负值的char 在进行类型提升后 它的值依然保持不变,那么 10000000(8bits的具符号类型,值-128) 变为 11111111 11111111 11111111 10000000(32bits的具符号类型,值-128) 有什么不对?
你的问题在于,把 -128(signed int)强制转化成 unsigned int 类型,那么 11111111 11111111 11111111 10000000 当成 无符号整型看待,它就是 4294967168,也没有什么不对
总之,你应该用
char a= -128;
printf("%d",a);
而不是 %u
楼主主要的问题在于把-128的二进制形式写错了一位。
收到的鲜花
rjsp
于
2023-02-21 10:44
送鲜花
10朵 附言:确实,我粗心了
对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2023-02-21 09:27
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
char -128的整型提升为什么和一般的不一样?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.029050 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved