自学新手提问:C语言赋值运算中的类型转换问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:54:15
shot a;
unsigned long b;
b=98304;a=b
printf(%d\n",a)

a的值为什么等于-32768

我想知道基本整型.长整型.短整型.无符号基本整型.无符号短整型.以及无符号长整型个转换方法.

本人自学C语言.望高手多多指教.
3.5+1/2 计算结果为什么是3.5 为什么不加上1/2

a是短整型,2个字节 最大是32767(01111……)

B是无符号的长整型 4个字节 (11111……)

B>A 把b付给A 会溢出的 只能截取后面两个字节(即

11111……) 就是—32768 啦

short字长两个字节,long是4个,98304的长度已经超过了shot所能容纳的长度,产生溢出,结果就是1111111111111111(二进制),在计算机里第一位是符号位,1表示负,而111111111111111是32768,合起来就是-32768

变量溢出了