打印
[技术问答]

数据基本类型

[复制链接]
922|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gygp|  楼主 | 2025-5-23 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、C语言数据基本类型

在C语言中有6种基本数据类型:short、int、long、float、double、char

1)整型:short int、int、long int

2)浮点型:float、double

3)字符类型:char


二、分析uint8_t\uint_16_t\uint32_t\uint64_t

1、数据来源:这些数据类型中都带有_t, _t 表示这些数据类型是通过typedef定义的,而不是新的数据类型。也就是说,它们其实是我们已知的类型的别名。

2、typedef:typedef用来定义关键字或标识符的别名

3、使用原因:方便代码的维护。比如,在C中没有bool型,于是在一个软件中,一个程序员使用int,一个程序员使用short,会比较混乱,最好用一个typedef来定义一个统一的bool,每个程序员都可以用这个别名的bool。

不同的平台会有不同的字长,所以利用预编译和typedef可以方便的维护代码。

typedef unsigned char uint8_t;//将uint8_t别名为无符号字符型

4、定义:在C99标准中定义了这些数据类型,具体定义在:stdint.h中

定义类型如下:

typedef   signed          char int8_t;
typedef   signed short     int int16_t;
typedef   signed           int int32_t;
typedef   signed       __INT64 int64_t;

/* exact-width unsigned integer types */
typedef unsigned          char uint8_t;
typedef unsigned short     int uint16_t;
typedef unsigned           int uint32_t;
typedef unsigned       __INT64 uint64_t;

/* 7.18.1.2 */
/* smallest type of at least n bits */
/* minimum-width signed integer types */
typedef   signed          char int_least8_t;
typedef   signed short     int int_least16_t;
typedef   signed           int int_least32_t;
typedef   signed       __INT64 int_least64_t;

/* minimum-width unsigned integer types */
typedef unsigned          char uint_least8_t;
typedef unsigned short     int uint_least16_t;
typedef unsigned           int uint_least32_t;
typedef unsigned       __INT64 uint_least64_t;

/* 7.18.1.3 */
/* fastest minimum-width signed integer types */
typedef   signed           int int_fast8_t;
typedef   signed           int int_fast16_t;
typedef   signed           int int_fast32_t;
typedef   signed       __INT64 int_fast64_t;

/* fastest minimum-width unsigned integer types */
typedef unsigned           int uint_fast8_t;
typedef unsigned           int uint_fast16_t;
typedef unsigned           int uint_fast32_t;
typedef unsigned       __INT64 uint_fast64_t;

/* 7.18.1.4 integer types capable of holding object pointers */
#if __sizeof_ptr == 8
typedef   signed       __INT64 intptr_t;
typedef unsigned       __INT64 uintptr_t;
#else
typedef   signed           int intptr_t;
typedef unsigned           int uintptr_t;
#endif

/* 7.18.1.5 greatest-width integer types */
typedef   signed     __LONGLONG intmax_t;
typedef unsigned     __LONGLONG uintmax_t;

5、格式化输出:

1)uint16_t %hu

2)uint32_t %u

3)uint64_t %llu

6、uint8_t类型的输出:

typedef unsigned char uint8_t;//将uint8_t别名为无符号字符型

uint8_t buf = 65;

printf("buf = %d",buf);//错误
printf("buf = %c",buf);//正确,打印出字符的ASCII码

使用特权

评论回复
沙发
作业粉碎机| | 2025-5-24 13:44 | 只看该作者
这些基本数据类型是C语言编程的基础,了解它们对于编写高效代码至关重要。

使用特权

评论回复
板凳
Carina卡| | 2025-6-8 10:59 | 只看该作者
在C语言中,基本数据类型(也称为内置数据类型)是构建程序的基础,用于定义变量、函数参数和返回值等

使用特权

评论回复
地板
BetrayalNO| | 2025-6-8 12:09 | 只看该作者
整数类型,用于存储整数值,分为有符号(signed)和无符号(unsigned)两种

使用特权

评论回复
5
Allison8859| | 2025-6-8 13:15 | 只看该作者
注意:具体大小依赖编译器和平台(可通过 <limits.h> 查看)。

使用特权

评论回复
6
Estelle1999| | 2025-6-8 15:12 | 只看该作者
有符号字符char        -128 到 127,无符号字符unsigned char 0到255

使用特权

评论回复
7
Euphoriaxixi| | 2025-6-8 15:40 | 只看该作者
char默认是否有符号由编译器决定(通常是有符号的)。

使用特权

评论回复
8
Betty1299| | 2025-6-8 18:09 | 只看该作者
字符常量用单引号表示,如 'A'。用于存储小数或科学计数法表示的数值。

使用特权

评论回复
9
vevive| | 2025-6-8 19:37 | 只看该作者
浮点常量默认是 double,加 f 后缀表示 float(如 3.14f)。

使用特权

评论回复
10
EuphoriaV| | 2025-6-9 08:46 | 只看该作者
浮点数存在精度误差问题(如 0.1 + 0.2 != 0.3)。

使用特权

评论回复
11
across往事| | 2025-6-9 10:24 | 只看该作者
布尔用于逻辑判断,只有两个值:true 或 false。

使用特权

评论回复
12
Charlotte夏| | 2025-6-9 13:00 | 只看该作者
其实,布尔需包含头文件 <stdbool.h> 以使用 bool、true、false 的宏定义。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

8408

帖子

16

粉丝