C语言数据类型
| 关键字 | 位数 | 表示范围 | stdint关键字 | ST关键字 | 举例 |
|---|---|---|---|---|---|
| unsigned char | 8 | 0 ~ 255 | uint8_t | u8 | u8 data = 128 |
| char | 8 | -128 ~ 127 | int8_t | s8 | s8 temperature = 25 |
| unsigned short | 16 | 0 ~ 65535 | uint16_t | u16 | u16 counter = 5000 |
| short | 16 | -32768 ~ 32767 | int16_t | s16 | s16 position = 32767 |
| unsigned int | 32 | 0 ~ 4294967295 | uint32_t | u32 | u32 number = 123456 |
| int | 32 | -2147483648 ~ 2147483647 | int32_t | s32 | s32 temperature = 25 |
| unsigned long | 32 | 0 ~ 4294967295 | unsigned long longValue = 4294967295UL | ||
| long | 32 | -2147483648 ~ 2147483647 | long number = -2147483648L | ||
| unsigned long long | 64 | 0 ~ (2^64)-1 | uint64_t | uint64_t bigValue = 18446744073709551615ULL | |
| long long | 64 | -(2^64)/2 ~ (2^64)/2-1 | int64_t | int64_t largeNumber = -9223372036854775807LL | |
| float | 32 | -3.4e38 ~ 3.4e38 | float pi = 3.14159f | ||
| double | 64 | -1.7e308 ~ 1.7e308 | double gravity = 9.81 |

格式字符
| 类型/说明符 | 说明 | 示例 |
|---|---|---|
| 整数 | ||
%d | 十进制有符号整数 | 123 |
%u | 十进制无符号整数 | 123 |
%o | 无符号以八进制表示的整数 | 173 |
%x | 十六进制整数(小写) | 7b |
%X | 十六进制整数(大写) | 7B |
| –注意– | –%6d %6u %6o %6x %6X – | –会控制长度,前面补0– |
| 浮点数 | ||
%f | 浮点数 | 3.141590 |
%.2f | 保留2位小数的浮点数 | 3.14 |
%e | 指数形式的浮点数 | 3.141590e+00 |
| 字符和字符串 | ||
%c | 单个字符 | A |
%s | 字符串 | Hello |
| 指针 | ||
%p | 指针地址 | 0x7ffd5e9e48a8 |
| 其他 | ||
%% | 输出百分号 | % |
%lu | 32位无符号整数 | 4294967295 |
%llu | 64位无符号整数 | 18446744073709551615 |
%-10s | 左对齐并占用宽度为 10 的字符串 | "Hello " |
%5.2f | 右对齐并占用宽度为 5,保留两位小数的浮点数 | " 12.34" |
%#x | 输出带有 0x 前缀的十六进制数 | 0x1a2b3c4d |
printf("....%d....%x....%f.",a,b,c)
int i = 5;
float f = 3.14;
float result = i + f; // i被转换为float
int i = 5;
float f = 3.14;
float result = i + f; // i被转换为float
unsigned int u = 10;
int k = -5;
unsigned int result = u + k; // k被转换为unsigned int
char c = 'A';
int asciiValue = c; // c被转换为int; 输出asciiValue 的 ASCII Value: 65
强制类型转换(type_name) expression
int x = 10;
float y = (float)x; // 使用强制类型转换将x转换为float