约 7872 字

约 39 分钟

#C 语言的变量与基本类型

计算机是用于计算的机器,而程序就是计算的步骤,编程语言的功能就是描述计算的步骤。因此,用于保存值的 变量 是编程中最基本的概念。

定义变量的格式为 变量类型 变量名 = 变量的初始值;,例如:

int age_of_yukari = 17; // 创建名为 age_of_yukari 的变量,类型为整数(int),初始值为 17
  • int 是变量类型,表示整数
  • age_of_yukari 是变量名
  • 17 是变量的值,这种直接写出来的值被称作 字面量(Literal)。

注意,这里的 = 表示的是赋值,也就是将 age_of_yukari 的值设为 17;而不是数学上的相等。

可以同时定义多个相同类型的变量,例如:

int width = 1920, height = 1080;
  • 定义了名为 width 的变量,初始值是 1920
  • 定义了名为 1080 的变量,初始值是 1080

#变量的命名规则

变量名只能由 字母、数字 和 下划线 组成,并且不能以数字开头。

一些示例:

正确的名字错误的名字说明
age_of_yukariage-of-yukari- 不能用于变量名
ageOfYukari@geOfYuk@ri@ 不能用于变量名
cat22cat变量名不能以数字开头
_git_hubgit's_hub' 不能用于变量名

#整数类型

整数类型的变量用于保存整数值。例如 int x = 10; 定义一个名为 x 的整型变量,并将它的初始值设置位 10。

在计算机中,数据以二进制进行存储。例如 7 的二进制是 111,如果使用 16 位二进制存储则是 00000000 00000111。

在 C 语言中有不同长度的整数类型,例如:

  • int 是最常用的整数类型,通常为 32 位,能够存储 -2147483648 到 2147483647 之间的整数;
  • long 通常是 64 位,可以存储更大范围的整数,常在 int 范围不够时使用;
  • unsigned int 是无符号的整数类型,通常为 32 位,能存储 0 到 4294967295 之间的整数,常在明确不需要负数时使用。

示例:

unsigned int age = 18;      // 年龄不可能是负数,并且也不太可能超过 4294967295

C 语言中包含以下整数类型:

类型中文名说明
int整型用于保存整数,通常为 32 位,范围在 -2147483648 到 2147483647,例如:0,-1,233
short短整型范围不大于 int
long长整型范围不小于 int
long long长长整型范围不小于 long
unsigned int无符号整型只能表示非负整数,通常为 32 位,范围在 0 到 4294967295,例如:0,1, 233
unsigned short无符号短整型范围不大于 unsigned int
unsigned long无符号长整型范围不小于 unsigned int
unsigned long long无符号长长整型范围不小于 unsigned long
signed int有符号整型等价于 int
signed short有符号短整型等价于 short
signed long有符号长整型等价于 long
signed long long有符号长长整型等价于 long long

C 语言中使用后缀来表示不同类型的整数字面量:

字面量后缀字面量类型
l 或 Llong
ll 或 LLlong long
u 或 Uunsigned
ul 或 ULunsigned long
ull 或 ULLunsigned long long

示例:

int age_of_yukari_dec = 17;             // 没有后缀,表示 int 类型的字面量
long age_of_yukari_hex = 17l;           // l 或 L 后缀的整数表示 long 类型的字面量
unsigned age_of_yukari_oct = 17u;       // u 或 U 后缀的整数表示 unsigned 类型的字面量

计算机使用二进制存储数据,因此一些涉及底层的开发中常常使用二进制、八进制和十六进制表示数值。
C 语言中使用 0x 前缀来表示十六进制字面量,例如:0xff,0x1234abcd。
C 语言中使用 0 前缀表示八进制字面量,例如:023,0456。

示例:

int age_of_yukari_dec = 17;         // 十进制
int age_of_yukari_hex = 0x11;       // 十六进制
int age_of_yukari_oct = 021;        // 八进制

#字符类型

字符类型的变量用于保存字母或标点符号等单个字符。例如 char ch = 'A'; 定义一个名为 ch 的字符类型变量,并将它的初始值设为字母 A。

'A' 这样使用一对单引号('')包裹的字符是一种字面量,它的值是其中包裹的字符的 ASCII 码,类型是 int 而非 char;赋值给 char 类型的变量时隐式转换为 char 类型。

C 语言中的 char 虽然被称为字符类型,但实际上只是一个字节。单个 char 类型的变量只能保存一个 ASCII 字符,而无法保存汉字。

类型中文名说明
char字符类型用于保存字符,例如 'A','@','\n'
signed char有符号字节范围在 -128 到 127
unsigned char无符号字节范围在 0 到 255

示例:

char ch = 'A';              // char 用于保存字符
unsigned char age = 17;     // signed char 和 unsigned char 通常用于保存一个字节以内的整数

#浮点类型

浮点类型的变量用于保存小数。例如 float pi = 3.14; 定义一个名为 pi 的浮点型变量,并将它的初始值设为 3.14。

和整型一样,浮点类型也有不同的长度,但是没有无符号的浮点类型。

类型中文名说明
float单精度浮点数用于保存小数,范围通常在 1.175494e-38 到 3.402823e+38,例如:0.0f,3.14159f
double双精度浮点数用于保存小数,范围通常在 2.225074e-308 到 1.797693e+308,例如:0.0f,3.14159f
long double长双精度浮点数范围不小于 int

C 语言中使用后缀来表示不同类型的浮点数字面量:

字面量后缀字面量类型
f 或 Ffloat
l 或 Llong double

示例:

float age_of_yukari = 17.0f;                // f 或 F 后缀的小数表示 float 类型的字面量
double age_of_yukari_double = 17.0;         // 无后缀的小数字面量是 double 类型
long double age_of_yukari_long = 17.0L;     // l 或 L 后缀的小数表示 long double 类型的字面量

#布尔类型

类型中文名说明
bool布尔型用于布尔值,取值为 true 或 false

示例:

#include <stdbool.h>            // 引入标准头文件 stdio.h
bool is_sunny = true;

#空类型 void

C 语言使用 void 表示空类型,常用于表示函数没有返回值或参数;不能用于定义变量。

void x; // 错误,不能定义 void 类型的变量

#强制类型转换

通过 (类型名)值 的方式,可以将“值”强制转换为“类型名”的类型。

示例:

double pi = 3.14;
int pi_int = (int)pi;       // 得到 3

#常量

C 语言使用 const 表示常量,也就是不能被修改的变量。例如:

int x = 10;     // 定义变量 x,值为 10
x = 20;         // 将变量 x 的值修改为 20

const int y = 30;   // 定义常量 y,值为 20,y 的值不能修改

更新: 2025/7/24

作者: PlanC

创建: 2025/6/22