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的时候不会? 这不叫乱码,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 这个问题很深奥,仅为个人观点,就记住unsigned不能存负数就行
页:
[1]