c语言笔记——基本数据类型

1.无符号基本型 unsigned int

和有符号型整数相比,在计算机内存中表示不区分,但是运算时有区别。特别注意它被赋值为负数的时候,最高位不是符号位,而是数据位。
例子如下:

int n = -2;
printf("%d\n",n); 
printf("%u\n",n); 

结果为:
-2
4294967294

2.字节数

在vc中
int 4个字节
long 4个字节
long long 8个字节
short 2个字节
char 1个字节
float 4个字节
double 8个字节

3.浮点型变量的精度

float 精度为8位
double 精度为17位

    float a;
    double b,c;
    a = 123.456789;
    b = a;
    c = 123.456789;
    printf("a=%f,b=%lf,c=%lf",a,b,c);

结果为:
a=123.456787,b=123.456787,c=123.456789
a为float的精度只有8位,故准确的值位123.45678,最后一位的7是随机的。同样b尽管是double 型,但是a赋值给b,b的值和a的一样。c为double型,精度为17为,故准确输出。

4.数据在内存中的表示

整数在内存中的表示:以补码形式存放
实数(浮点数)在内存中的表示:以指数形式存放(包含符号位,阶码,尾数),实数默认都是当作double处理的。

5.强制类型转换

自动转换:

(1)无符号短长度的数据类型->无符号或有符号长长度的数据类型
直接将无符号位短长度的数据类型的数据作为长长度的数据类型数据的低位部分,长长度的数据类型的高位部分补零。
xx……x ——>00……0 xx……x

代码:

    unsigned char ch = -4;
    int b ;//假设int的数据为16位
    b = ch;
    printf("%d\n",b);

结果为:252
分析:无符号char型为1个字节,8位
(-4)原码:1000 0100
(-4)补码:1111 1100
当赋值给int型的时候,
b的补码为:0000 0000 1111 1100
此时b为正数,补码=原码,真值为252

(2)有符号短长度的数据类型->无符号或有符号长长度的数据类型
直接将无符号位短长度的数据类型的数据作为长长度的数据类型数据的低位部分,然后将低位部分的最高位(即有符号短长度数据的符号位)向长长度的数据类型数据的高位部分拓展.
zx……x ——>zz……z zx……x

代码:

char ch = -4;
int b ;
b = ch;
printf("%d\n",b);

结果:-4
分析:有符号char型为1个字节,8位
(-4)原码:1000 0100
(-4)补码:1111 1100
当赋值给int型的时候,
b的补码为:1111 1111 1111 1100
b为负数,故(b)原码:1000 0000 0000 0100=-4

(3)长长度的数据类型->短长度的数据类型

直接截取长长度的数据类型的低位部分,作为短长度数据类型的数据。
yy……y xx……x —–> xx……x
代码:

int b = -256;
char ch;
ch = b;
printf("%d\n",ch);

结果:0
分析:b的原码为:1000 0001 0000 0000,b的补码为:1111 1111 0000 0000
ch为char类型的,故直接截取b的后8位:0000 0000 =0

(4)长度相同的数据类型转换
数据按照原样复制即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值