1.数据类型-变量-常量
数据类型
数据类型
│
├── 基本数据类型
│ ├── 整数类型
│ │ ├── int
│ │ ├── unsigned int
│ │ ├── short
│ │ ├── unsigned short
│ │ ├── long
│ │ ├── unsigned long
│ │ ├── long long
│ │ └── unsigned long long
│ ├── 浮点数类型
│ │ ├── float
│ │ ├── double
│ │ └── long double
│ └── 字符类型
│ ├── char
│ ├── unsigned char
│ └── signed char
│
├── 派生数据类型
│ ├── 数组
│ ├── 指针
│ ├── 结构体
│ └── 共用体
│
├── 空类型
│ └── void
│
├── 类型限定符
│ ├── short
│ ├── long
│ ├── signed
│ └── unsigned
│
└── 枚举类型
└── enum
常量
常量是指在程序运行过程中,其值不发生变化的量。
常量又分为整型 实型(浮点型)字符串型
变量
为了指定存储区域,应该为每个变量赋予唯一的名称(标识符)
变量命名规则
变量名称只能包含字母(大写和小写字母),数字和下划线。
变量的第一个字母应该是字母或下划线。
对于变量名称(标识符)可以使用多长没有指定。但是,如果变量名超过31个字符,则在某些编译器中可能会遇到问题。
常见的格式说明符
1. 整数类型
%d / %i:输出带符号的十进制整数。
例子:int x = -42; printf("%d", x); 输出:-42
%u:输出无符号的十进制整数。
例子:unsigned int x = 42; printf("%u", x); 输出:42
%o:输出无符号的八进制整数。
例子:unsigned int x = 42; printf("%o", x); 输出:52
%x:输出无符号的十六进制整数(小写字母)。
例子:unsigned int x = 42; printf("%x", x); 输出:2a
%X:输出无符号的十六进制整数(大写字母)。
例子:unsigned int x = 42; printf("%X", x); 输出:2A
2. 浮点类型
%f:输出浮点数(默认保留六位小数)。
例子:float x = 3.14159; printf("%f", x); 输出:3.141590
%e:以科学计数法格式输出浮点数(小写)。
例子:float x = 3.14159; printf("%e", x); 输出:3.141590e+00
%E:以科学计数法格式输出浮点数(大写)。
例子:float x = 3.14159; printf("%E", x); 输出:3.141590E+00
%g:根据值的大小自动选择 %f 或 %e 格式来输出浮点数,且不会打印多余的零。
例子:float x = 0.000123; printf("%g", x); 输出:1.23e-04
%G:类似 %g,但是使用大写字母表示科学计数法。
例子:float x = 1234.5678; printf("%G", x); 输出:1234.57
3. 字符与字符串
%c:输出单个字符。
例子:char x = 'A'; printf("%c", x); 输出:A
%s:输出字符串。
例子:char *str = "Hello, World!"; printf("%s", str); 输出:Hello, World!
%p:输出指针的地址。
例子:int *p = &x; printf("%p", p); 输出:0x7fffd71f9e2c(取决于平台和指针值)
4. 宽度与精度
宽度:你可以在格式说明符中指定最小宽度。例如,%5d 会确保输出的数字至少有 5 个字符宽。如果数字较小,会使用空格填充。
例子:int x = 42; printf("%5d", x); 输出: 42
精度:在浮点数输出中,可以指定小数点后的位数,格式是 .数字。例如,%.2f 会输出保留两位小数的浮点数。
例子:float x = 3.14159; printf("%.2f", x); 输出:3.14
组合宽度与精度:你可以同时指定宽度和精度,例如 %10.3f 会打印出宽度为 10 的浮点数,并且保留 3 位小数。
例子:float x = 3.14159; printf("%10.3f", x); 输出: 3.142
5. 无符号整数大小类型
%zu:输出 size_t 类型的无符号整数(适用于 sizeof)。
例子:size_t x = 100; printf("%zu", x); 输出:100
%ld:输出 long 类型的整数。
例子:long x = 1000000; printf("%ld", x); 输出:1000000
%lld:输出 long long 类型的整数。
例子:long long x = 1000000000000; printf("%lld", x); 输出:1000000000000
6. 其他格式说明符
%n:这个格式说明符并不会输出任何内容,而是将当前打印的字符数存储到传入的 int 变量中。
例子:int count; printf("Hello, World!%n", &count); printf("Number of characters printed: %d", count); 输出:Hello, World! Number of characters printed: 13
%%:输出一个百分号 %。
例子:printf("100%% done\n"); 输出:100% done
格式说明符的一般结构:
格式说明符的基本结构是:
%[flags][width][.precision][length]specifier
flags(标志):用来控制输出的格式,比如左对齐、填充零等。
-:左对齐。
0:用零填充空白(适用于数值类型)。
+:总是输出符号(正数时加 +)。
空格:如果是正数,前面输出一个空格。
width(宽度):指定输出的最小宽度,如果输出的内容小于该宽度,则会用空格填充。
.precision(精度):通常用于浮点数和字符串,控制小数位数或者字符串最大长度。
length(长度):指定数据类型的大小(如 l 表示 long,ll 表示 long long,z 表示 size_t 类型)。
#include <stdio.h>
int main() {
int a = 123;
float f = 3.14159;
char c = 'A';
char *str = "Hello, World!";
size_t size = sizeof(a);
// 输出整数
printf("Integer: %d\n", a); // 输出:Integer: 123
// 输出浮点数
printf("Float: %.2f\n", f); // 输出:Float: 3.14
// 输出字符
printf("Char: %c\n", c); // 输出:Char: A
// 输出字符串
printf("String: %s\n", str); // 输出:String: Hello, World!
// 输出 size_t 类型的值
printf("Size of a: %zu\n", size); // 输出:Size of a: 4
return 0;
}