unsigned a 默认为unsigned int a 范围为 65535 因此 你的溢出了 所以变成了 -32768 如果你把声明修改为signed int a 就会正确输出32768 VC之所以显示正确是因为它是32位编译器,int为4个字节,而 TC是一个16位编译器,int只有2个字节。--- 此题是考整数的存储方式--二进制补码,你只要熟...
而第一个参数在栈顶,所以第一个printf其实执行顺序是: (1)a 所以输出的是16,此时a=16; (2)a=(a>>2)所以输出的是4 ,此时a=4; (3)a>>2 所以输出的是1,此时a=4; 第二个printf类似: (1)a 所以输出是16,此时a=16; (2)a=(a>>2)所以输出是4,此时a=4; (3)a/2 所以输出是2,此...
ungsiged 关键字是把变量声明为无符号类型的,它与变量的基本类型(如int ,long,double等)配合使用,当它所修饰的基本类型为int时,int可以省略,所以,像楼主所理解的ungsiged a; 和 unsigned int a; 是等价的,这个理解是没错儿的!另外,如果你声明了一个 int a;则编译器默认它为有符号类型...
这是位域结构,1表示成员a只占1位空间,注意是1位,不是1字节.1个字节是8位.
unsigned a;a=5;或:unsigned int a;a=5;16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned int能存储的数据范围则是0~65535,在计算机中,整数是以补码形式存放的。系统使用 无符号数只表示大小,有符号数最高位(二进制情况下最高位表示符号位),在同一操作系统下,有符号数和...
默认为unsigned int。 这是C语言的一种缺省规则。即当定义变量 unsigned a;时,与定义 unsigned int a;是完全相同的。而要定义unsigned long,则必须写全unsigned long所有文字,如 unsigned long b;但是在32位编译器中,int和long都是占4个字节,unsigned int和unsigned long并没有区别。
亲爱的感谢您的耐心等待,main(){unsigneda=32768;printf("a=%d\n",a);}首先你的代码有些问题:1、头文件stdio.h必须引入,2、语句结尾少分号。运行结果:32768运行环境:Windowsxpsp3en,MSVC++6.0解释:unsigned4字节,最大可表示数字4294967295,32768赋值时不会出现溢出呢。[开心]亲亲您好,这要...
百度试题 题目执行语句unsigned a=-1;long b=1;auto c=a 相关知识点: 试题来源: 解析 false 反馈 收藏
a是unsigned int 类型,1是int类型,a-1运算的时候把1转换成unsigned int 类型进行运算。得到的结果是-1。关键也不是赋值的结果而是取值的结果。因为不管是b还是c中存储的数都是1111111111111111 为什么是这样的呢?!在内存中数据是以补码的形式存在的。补码规则:正数与它正常的二进制形式完全一样。+...
第3个计算的是 第一个参数 a>>2 右移2位,即 0000 0001 为 1 输出结果是 1, 4, 16 (最后 a的值是 4,因为第3次计算并没有进行赋值运算)发现的一个问题,在VC编译器下,输出结果是 1,4,4, 看反汇编的代码发现是先算了第2个参数的,在另外一个编译器下输出是 1,4,16...