南枫岚 发表于 2020-11-29 10:11:52

unsigned问题

#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的时候不会?

zhangjinxuan 发表于 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

zhangjinxuan 发表于 2022-8-17 15:36:56

这个问题很深奥,仅为个人观点,就记住unsigned不能存负数就行
页: [1]
查看完整版本: unsigned问题