数据和c

本文详细介绍了C语言中的基本数据类型,包括整型的各种类别及其使用场景,字符类型的特性和转义序列,_Bool类型的用途,以及浮点数类型的取值范围、打印方式和可能出现的上溢、下溢及舍入误差等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.C语言基本数据类型

1.整型

①.整型类别

int 十进制打印(%d) 八进制打印(%o) 十六进制打印(%x)

short int 类型(或者简写为short),占用空间小,有符号类型

long int 类型(或者long),占用空间可能比int多,适用于较大数值的场合。有符号类型。

long long int 或 long long(c99标准加入)占用空间可能比long多,适用于更大数据的场合。有符号类型。

unsigned int 或 unsigned只用于非负值的场合。这种类型与有符号类型表示的范围不同。例如:16位unsigned int允许的取值范围是0-65535,而不是-32768-32767.

在任何有符号类型前面添加关键字signed,可强调使用有符号类型的意图。

常见设置是,long long占64位,long占32位,short占16位,int占16位或32位。

②.整数溢出 

#include <stdio.h>
int main(void){
    int i=2147483647;
    unsigned int j=4294967295;

    printf("%d %d %d\n",i,i+1,i+2);//结果 2147483647 -2147483648 -2147483647
    printf("%u %u %u\n",j,j+1,j+2);//结果 4294967295 0 1
    return 0;
}

当达到它的最大值,会更新从起点开始。

 

2.使用字符:char类型

char类型用于存储字符(如:字符或者标点符号),但是从技术层面看,char是整数类型。

转义字符

转义序列\a\b\f\n\r\t\v\\\'\"\?\0oo\xhh
含义警报退格换页换行回车水平制表符垂直制表符反斜杠单引号双引号问号八进制十六进制

打印字符:printf()函数用%c指明待打印的字符,如果用%d转换说明打印char类型变量的值。

有无符号:根据编译器,可以用signed char表示有符号类型,unsigned char表示无符号类型。

 

3. _Bool类型

1表示true,0表示false,所以_Bool也是一种整数类型,存储空间1位即可。

 

4.float、double和long double

①.基础概念

float取值范围10指数-37-----10指数37,储存空间32位。其中8位用于表示指数的值和符号,剩余24位用于表示非指数部分及其符号。

double是64位。long double满足更高精度。

②.%f打印十进制计数法的float和double类型浮点数,用%e打印指数计数法的浮点数。

③.浮点数的上溢和下溢

上溢:现在c定义为无穷大,inf或者infinity

下溢:会丢失精度,除数较大会直接都变成0.

还有一种未定义的值是NaN

④.浮点数的舍入错误

给定一个数,加上1,再减去原来给定的数,结果可能不是1

include <studio.h>
int main(void){
    float a,b;
    b=2.0e20+1.0;
    a=b-2.0e20;
    printf("%f \n",a);
    return 0;
}
//该程序输出结果如下:
//0.000000                linux系统下的老式gcc
//-13584010575872.000000  Turbo c 1.5
//4008175468544.000000    Xcode 4.5、Visual Studio 2012、当前版本的gcc

得出这些奇怪答案的原因是,计算机缺少足够的小数位来完成正确的运算。float精度不足。后面统一表示为第三种输出格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚礼鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值