C语言中的数据类型可以分为以下几类:逻辑类型、整数类型、浮点类型、void类型和其他类型。每种类型有其特定的范围和用途。
1. 逻辑类型(布尔类型)
- 只有两个值:
true
(非零)和false
(零)。 - 需要包含头文件
<stdbool.h>
才能使用bool
类型。
#include <stdio.h> #include <stdbool.h> int main() { bool a = true; // 声明一个 bool 类型的变量并初始化为 true if (a) { printf("true %d\n", a); // 输出 1 } else { printf("false %d\n", a); } return 0; }
结果:
true 1
2. 整数类型
- char:字符类型,1字节。
- 范围:-128~127 或 0~255
- signed char:有符号字符类型,1字节。
- 范围:-128~127
- unsigned char:无符号字符类型,1字节。
- 范围:0~255
- short(或 signed short):短整型,2字节。
- 范围:-32768~32767
- unsigned short:无符号短整型,2字节。
- 范围:0~65535
- int(或 signed int):整型,通常是4字节。
- 范围:-2147483648~2147483647
- unsigned int:无符号整型,通常是4字节。
- 范围:0~4294967295
- long(或 signed long):长整型,通常是4字节或8字节。
- 范围:-2147483648~2147483647(4字节)或更大(8字节)
- unsigned long:无符号长整型,通常是4字节或8字节。
- 范围:0~4294967295(4字节)或更大(8字节)
char类型示例
#include "stdio.h" int main() { char ch = 65; // 初始化为字符 'A' 的 ASCII 码 printf("ch=%d %c\n", ch, ch); // 输出 ch=65 A return 0; }
结果:
#include "stdio.h" int main() { signed char sch = -65; unsigned char uch = 200; printf("sch=%d uch=%u\n", sch, uch); // 输出 sch=-65 uch=200 return 0; }
3. 浮点类型
- float:单精度浮点型,通常是4字节。
- 精度大约为6-7位有效数字
- double:双精度浮点型,通常是8字节。
- 精度大约为15-16位有效数字
- long double:扩展精度浮点型,通常是10字节或16字节。
浮点类型示例
#include <stdio.h> int main() { float f = 3.14f; double d = 3.14; long double ld = 3.14L; printf("float: %f, size: %zu\n", f, sizeof(f)); printf("double: %f, size: %zu\n", d, sizeof(d)); printf("long double: %Lf, size: %zu\n", ld, sizeof(ld)); return 0; }
结果:
float: 3.140000, size: 4 double: 3.140000, size: 8 long double: 3.140000, size: 16
4. void类型
- void:表示无类型,通常用于函数返回类型和指针。
void类型示例
#include <stdio.h> void printMessage() { printf("This is a void function.\n"); } int main() { printMessage(); return 0; }
结果:
This is a void function.
5. 类型大小的示例
#include <stdio.h> #include <stdbool.h> int main() { printf("Size of bool: %zu bytes\n", sizeof(bool)); printf("Size of char: %zu bytes\n", sizeof(char)); printf("Size of short: %zu bytes\n", sizeof(short)); printf("Size of int: %zu bytes\n", sizeof(int)); printf("Size of float: %zu bytes\n", sizeof(float)); printf("Size of double: %zu bytes\n", sizeof(double)); printf("Size of long double: %zu bytes\n", sizeof(long double)); printf("Size of long: %zu bytes\n", sizeof(long)); printf("Size of unsigned long: %zu bytes\n", sizeof(unsigned long)); return 0; }
结果:
Size of bool: 1 bytes Size of char: 1 bytes Size of short: 2 bytes Size of int: 4 bytes Size of float: 4 bytes Size of double: 8 bytes Size of long double: 16 bytes Size of long: 8 bytes Size of unsigned long: 8 bytes
6.命令行参数
在C语言中,argc
和 argv
用于处理命令行参数。
argc
:表示命令行参数的个数(包含程序名称)。argv
:是一个指针数组,包含命令行参数的字符串。
示例程序
#include <stdio.h> int main(int argc, char *argv[]) { printf("Number of arguments: %d\n", argc); for (int i = 0; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } return 0; }
编译并运行:
gcc -o cmdargs cmdargs.c ./cmdargs arg1 arg2
结果:
Number of arguments: 3 Argument 0: ./cmdargs Argument 1: arg1 Argument 2: arg2