数据类型与变量
在C语言中,数据类型用于定义变量或函数返回值所能存储的数据的类型。理解不同的数据类型以及如何定义和使用变量,是掌握C语言编程的基础。
1 C语言的数据类型
C语言提供了多种数据类型,分为基本数据类型和用户自定义数据类型。基本数据类型包括整型、浮点型、字符型、枚举类型和void
类型等。
1.1 整型
整型用于表示整数。C语言提供了多种整型,分别用于存储不同范围的整数。
- 基本整型:
int
:标准整数类型,通常占用4个字节(32位)。short
:短整数类型,通常占用2个字节(16位)。long
:长整数类型,通常占用4个或8个字节(32位或64位,取决于系统)。long long
:更长的整数类型,通常占用8个字节(64位)。
- 有符号与无符号:
- 默认情况下,整型是有符号的(
signed
),可以表示正数、负数和零。 - 使用
unsigned
关键字可以定义无符号整型,只表示零和正数,范围更大。
- 默认情况下,整型是有符号的(
示例:
#include <stdio.h>
int main() {
int a = 10; // 有符号整型
unsigned int b = 20; // 无符号整型
short c = -5; // 有符号短整型
long d = 100000L; // 有符号长整型
long long e = 10000000000LL; // 有符号长长整型
printf("int a = %d\n", a);
printf("unsigned int b = %u\n", b);
printf("short c = %d\n", c);
printf("long d = %ld\n", d);
printf("long long e = %lld\n", e);
return 0;
}
输出:
int a = 10
unsigned int b = 20
short c = -5
long d = 100000
long long e = 10000000000
1.2 浮点型
浮点型用于表示带有小数部分的实数。C语言提供了几种浮点类型,以支持不同的精度需求。
float
:单精度浮点数,通常占用4个字节。double
:双精度浮点数,通常占用8个字节。long double
:更高精度的浮点数,通常占用12或16个字节,具体取决于编译器和系统。
示例:
#include <stdio.h>
int main() {
float pi = 3.14f; // 单精度浮点数
double e = 2.718281828; // 双精度浮点数
long double phi = 1.61803398875L; // 长双精度浮点数
printf("float pi = %.2f\n", pi);
printf("double e = %.9lf\n", e);
printf("long double phi = %.11Lf\n", phi);
return 0;
}
输出:
float pi = 3.14
double e = 2.718281828
long double phi = 1.61803398875
1.3 字符型
字符型用于存储单个字符。C语言提供了char
类型来表示字符,同时也可以用于存储小整数(因为char
实际上是一个整数类型)。
char
:占用1个字节(8位),可以表示ASCII字符。unsigned char
:无符号字符类型,范围从0到255。signed char
:有符号字符类型,范围从-128到127。
示例:
#include <stdio.h>
int main() {
char letter = 'A'; // 字符'A'
unsigned char uchar = 200; // 无符号字符
signed char schar = -100; // 有符号字符
printf("char letter = %c\n", letter);
printf("unsigned char uchar = %u\n", uchar);
printf("signed char schar = %d\n", schar);
return 0;
}
输出:
char letter = A
unsigned char uchar = 200
signed char schar = -100
1.4 枚举类型
**枚举类型(enum
)**用于定义一组具名的整数常量,使代码更加易读和易维护。通过enum
可以为相关的常量赋予有意义的名字。
示例:
#include <stdio.h>
// 定义枚举类型Day
enum Day {
SUNDAY, // 0
MONDAY, // 1
TUESDAY, // 2
WEDNESDAY, // 3
THURSDAY, // 4
FRIDAY, // 5
SATURDAY // 6
};
int main() {
enum Day today = WEDNESDAY;
printf("Today is day number %d\n", today);
if (today == WEDNESDAY) {
printf(</