unsigned int a=65535; printf("%d",a); 既然无符号 为什么结果是 -1呢?
来源:百度知道 编辑:UC知道 时间:2024/05/18 00:35:02
问题是为什么 -1 无符号不是都是正的吗
111111111111111111111111 在内存里16个1 头一位是符号位 1代表负
但之前定义了无符号 就应该正啊
还有-1是十进制数 那65535这又叫什么数
下楼的 还有-1是十进制数 那65535这又叫什么数
111111111111111111111111 在内存里16个1 头一位是符号位 1代表负
但之前定义了无符号 就应该正啊
还有-1是十进制数 那65535这又叫什么数
下楼的 还有-1是十进制数 那65535这又叫什么数
负数的二进制最高位为 1
假如说 int 能表示的最大值是0~10,
那么11的话也会表示 1,其余部分溢出了,
如果是-1的话,因为其没有负数, 所以就是最大的 10-1=9 ,
跟上面的65535是一个道理...
printf没有类型检查是C语言的缺陷之一。
int 类型使用 %d输出
unsigned int 应当使用 %u 输出
在内存里无所谓正负,反正就是一些0/1。
printf把它解释成 有符号数,无符号数,甚至浮点数。
%d是有符号的参数~你试试%ud
超出了int的范围了。
unsigned int a=2;int b = -3;
定义unsigned int a;输入-1程序怎么处理
unsigned 与int哪个好?
srand((int)getpid());srand((unsigned) time(&t));
void a(int a,int b=0)的含义?
若已声明unsigned a=30;,则表达式a=-a的值为?
编写具有如下原型的函数:int f(unsigned long x, int n, int& Lxn);
C语言什么时候会用到short int,unsigned int还有long int呢
java问题 int a[ ]=new int[5]是什么意思
有关void * malloc (unsigned int size) 的溢出问题