目录
[一. 常量](#一. 常量)
[二. 变量](#二. 变量)
[变量定义格式数据类型 变量名1, 变量名2, ...;](#变量定义格式数据类型 变量名1, 变量名2, ...;)
[三. 数据类型](#三. 数据类型)
[四. 运算符](#四. 运算符)
[五. 输入与输出语句](#五. 输入与输出语句)
[六. 本章小结](#六. 本章小结)
前言:本文介绍了C语言基础概念,包括常量(整型、实型、字符、字符串、符号常量)、变量(定义、初始化、常变量)和数据类型体系(整型、浮点型、枚举等)。详细讲解了运算符(算术、关系、逻辑、赋值等)的用法和优先级,以及输入输出函数(printf、scanf、getchar、putchar)的使用方法。重点阐述了常量和变量的区别、数据类型的分类、运算符的特殊规则(如整数相除舍去小数)和输入输出格式控制。这些基础知识为后续深入学习C语言编程奠定了基础。
此章节主要讲解C语言的运算符、认识变量、认识常量、输入语句、输出语句、数据类型。
一. 常量
常量是指在程序运行过程中其值不可改变的量。C语言中的常量主要分为以下几类:
整型常量
-
即数学中的整数,如
0、-25、100、075(八进制)、0x3A(十六进制)。 -
默认类型为
int,对于较大的数,可使用后缀L或LL表示long或long long类型,如100L。
实型常量(浮点型常量)
-
即数学中的小数,有两种表示形式:
-
十进制小数形式:
3.14、-0.001、.5、10. -
指数形式:
1.23e-4(表示1.23×10⁻⁴)、5E6(表示5.0×10⁶)。
-
-
默认类型为
double。使用后缀f或F可指定为float类型,如3.14f。
字符常量
-
由一对英文单引号 括起来的单个字符,如
'A'、'#'、'5'。 -
本质是存储该字符对应的ASCII码值(一个整数)。
-
特殊字符常量(转义字符) :以反斜杠
\开头,表示具有特殊功能的字符,如:-
\n:换行 -
\t:水平制表符 -
\\:反斜杠本身 -
\':单引号 -
\":双引号 -
\0:空字符(字符串结束标志)
-
字符串常量
-
由一对英文双引号 括起来的字符序列,如
"Hello, World!"、"A"、"123\n"。 -
系统在存储字符串时,会自动在末尾添加一个空字符
'\0'作为结束标志。 -
注意 :字符常量
'A'(占1字节)与字符串常量"A"(占2字节,包含'A'和'\0')完全不同。
符号常量
-
使用一个标识符(符号)来代表一个常量。
-
通常使用
#define预处理指令 定义,格式为:#define 标识符 常量值。 -
例如:
#define PI 3.14159 -
特点:
-
在编译前进行文本替换,不占用运行时的内存。
-
习惯上用大写字母命名,以区分变量。
-
因其仅是文本替换,故没有数据类型的概念,也无法进行类型检查。
-
二. 变量
定义与概念
-
变量是在程序运行过程中,其值可以改变的量。
-
变量代表内存中一个具有名称的存储单元,用于存放数据。
-
C语言遵循 "先定义,后使用" 的原则。定义变量时需要指定其数据类型 和变量名。
变量定义格式
数据类型 变量名1, 变量名2, ...;
-
示例:
cppint age; // 定义一个名为age的整型变量 float salary; // 定义一个名为salary的单精度浮点型变量 char grade; // 定义一个名为grade的字符型变量 int a, b, sum; // 同时定义多个同类型变量
变量的初始化
-
在定义变量的同时为其赋予一个初始值。
-
格式 :
数据类型 变量名 = 初始值; -
示例 :
int count = 0; char first_char = 'Y';
常变量
-
使用
const关键字修饰的变量。 -
格式 :
const 数据类型 变量名 = 值; -
示例 :
const int DAYS_OF_WEEK = 7; -
特点与与符号常量的区别:
-
常变量具有变量的所有属性(有数据类型,占用存储空间),只是其值在初始化后不能再被修改。
-
符号常量 (
#define)是编译前的文本替换,不分配存储空间,无数据类型。 -
常变量提供了更好的类型安全性和作用域控制。
-
三. 数据类型
C语言的数据类型体系如下:
cpp
C语言数据类型
├── 基本类型
│ ├── 整型类型
│ │ ├── 基本整型 (int)
│ │ ├── 短整型 (short [int])
│ │ ├── 长整型 (long [int])
│ │ ├── 双长整型 (long long [int])
│ │ ├── 字符型 (char) // 本质是存储ASCII码的整型
│ │ └── 布尔型 (_Bool, C99引入,需包含<stdbool.h>以使用bool, true, false)
│ │
│ └── 浮点类型(实型)
│ ├── 单精度浮点型 (float)
│ ├── 双精度浮点型 (double)
│ └── 长双精度浮点型 (long double)
│
├── 枚举类型 (enum) // 用户自定义的有限整数值集合
├── 空类型 (void) // 主要用于函数无返回值或通用指针
│
└── 派生类型(构造类型)
├── 指针类型 (*)
├── 数组类型 ([])
├── 结构体类型 (struct)
├── 共用体类型 (union)
└── 函数类型 // 函数返回值的类型
补充说明:
-
字符型为什么是整型?
char类型在内存中存储的是字符对应的ASCII码(一个0~255的整数),因此它可以参与整数运算(如'A' + 1得到'B'),也可以使用整型格式符%d输出其码值。 -
类型修饰符 :
signed(有符号,默认)、unsigned(无符号)可与整型结合使用,改变其表示范围。例如unsigned int表示无符号整型。 -
类型大小与取值范围 :不同类型占用的内存字节数及其取值范围与编译器和系统平台相关,可通过
sizeof运算符查询,如sizeof(int)。
四. 运算符
运算符是告诉编译器执行特定数学或逻辑操作的符号。
算术运算符
-
+(加),-(减),*(乘),/(除),%(取模/求余) -
注意:
-
整数相除 (
/) 结果为整数,舍去小数部分。如5 / 2结果为2。 -
取模运算符 (
%) 要求两侧操作数必须为整数 。如7 % 3结果为1。 -
++(自增) 和--(自减) 是单目运算符,分前缀(如++i)和后缀(如i++)两种形式,两者对变量自身的最终影响相同,但在表达式中的值不同。
-
关系运算符
-
用于比较两个操作数:
==(等于),!=(不等于),>(大于),<(小于),>=(大于等于),<=(小于等于)。 -
运算结果为逻辑值:真 (
1) 或 假 (0) ,在C语言中通常用int类型的1和0表示。
逻辑运算符
-
用于组合或修改逻辑条件:
&&(逻辑与),||(逻辑或),!(逻辑非)。 -
操作数通常为关系表达式或逻辑值。
-
短路求值 :对于
&&,若左边为假,则右边不再计算;对于||,若左边为真,则右边不再计算。
赋值运算符
-
基本赋值运算符:
=。将右边表达式的值赋给左边的变量。 -
复合赋值运算符:
+=,-=,*=,/=,%=等。例如a += 5;等价于a = a + 5;。
条件运算符(三目运算符)
-
格式:
表达式1 ? 表达式2 : 表达式3 -
执行过程:先计算
表达式1,若其值为真(非0),则整个表达式的值为表达式2的值;否则为表达式3的值。 -
示例 :
max = (a > b) ? a : b;// 求a和b中的较大值。
-
逗号运算符
-
格式:
表达式1, 表达式2, ..., 表达式n -
执行过程:从左到右依次计算各个表达式,整个逗号表达式的值等于最后一个表达式 (
表达式n) 的值。 -
示例 :
x = (a=3, b=5, a+b);// 执行后,a为3,b为5,x为8。
-
运算符优先级与结合性
-
当表达式中出现多种运算符时,优先级高的先运算。
-
优先级相同时,根据结合性(从左到右或从右到左)决定计算顺序。
-
通用原则 :单目 > 算术 > 关系 > 逻辑 > 条件 > 赋值 > 逗号。建议使用圆括号
()明确指定运算顺序,增强可读性。
五. 输入与输出语句
C语言本身没有输入输出语句,通过调用标准库函数实现,使用时需包含头文件 #include <stdio.h>。
格式化输出函数:printf()
-
函数原型 :
int printf(const char *format, ...); -
功能:将数据按照指定格式输出到标准输出设备(通常是屏幕)。
-
格式控制字符串 (
format) 组成:-
普通字符:原样输出。
-
格式说明符 :以
%开头,指定后续输出项的数据类型和格式。-
%d或%i:输出有符号十进制整数 (int)。 -
%u:输出无符号十进制整数。 -
%f:输出十进制单/双精度浮点数 (默认保留6位小数)。 -
%c:输出单个字符 (char)。 -
%s:输出字符串。 -
%p:输出指针地址。 -
%x或%X:输出十六进制整数。 -
%o:输出八进制整数。 -
%%:输出一个百分号%。
-
-
可在
%和格式字母间插入宽度、精度等修饰符 ,如%5d(输出宽度至少5位)、%.2f(保留2位小数)、%-10s(左对齐,宽度10)。
-
格式化输入函数:scanf()
-
函数原型 :
int scanf(const char *format, ...); -
功能:从标准输入设备(通常是键盘)读取数据,并存储到指定的变量地址中。
-
关键点:
-
格式控制字符串中的格式说明符必须与后续变量地址列表的类型严格匹配。
-
变量前必须加上取地址运算符
&(除非变量本身是指针,如数组名)。 -
输入时,数据之间默认以空白字符(空格、Tab、回车)作为分隔。
-
-
示例:
cppint age; float score; char name[20]; scanf("%d %f %s", &age, &score, name); // 输入:25 89.5 Zhangsan
字符输入输出函数
-
int getchar(void);// 从标准输入读取一个字符(通常为键盘),返回该字符的ASCII码。 -
int putchar(int c);// 向标准输出写入一个字符。 -
示例:
cppchar ch; ch = getchar(); // 等待用户输入一个字符 putchar(ch); // 输出该字符 putchar('\n'); // 输出换行
六. 本章小结
本章系统构建了C语言的基础知识框架:
-
常量与变量:理解了不可变与可变数据的存储与表示,明确了符号常量与常变量的本质区别。
-
数据类型 :掌握了从基本整型、浮点型到派生类型的完整体系,理解了
char的整型本质及各种类型的基本用途。 -
运算符 :熟悉了各类运算符的功能、优先级与结合性,特别是
/、%、++、--、&&、||等的使用细节。 -
输入输出 :掌握了
printf和scanf的核心用法,理解了格式控制字符串的作用及变量地址在输入中的必要性。