C语言学习笔记----基础篇

时间:2024-11-12 21:45:36

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;
}