鱼C论坛

 找回密码
 立即注册
查看: 3725|回复: 2

unsigned问题

[复制链接]
发表于 2020-11-29 10:11:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

void main()
{
        signed char a=-2;
        a=a>>1;
        printf("%d",a);
}

各位大佬们求助个问题:

在定义那,如果定义signed int ,结果a==-1;
如果定义unsigned int , 结果a为乱码
如果定义signed char,结果a==-1;
如果定义unsigned char,结果a==127;

为什么用unsigned int定义的时候a为乱码,而用 unsigned char的时候不会?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-17 15:34:00 | 显示全部楼层
这不叫乱码,unsigned int打印出应是2147483647,等于2的31次方-1
而unsigned char打印出的值(127)等于2的7次方-1
unsigned没有负数,设置负数就等于设置成了 2的s次方+n-1(其中s为类型字节大小*8,n为设置成的负数)
其实这个程序是很有意义的,他求出了该类型在signed能存储的最大数是多少
如定义成unsigned char输出127,对吧,那么signed char能存储的最大数就是127
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-17 15:36:56 | 显示全部楼层
这个问题很深奥,仅为个人观点,就记住unsigned不能存负数就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 01:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表