C 语言基础入门:基本数据类型与运算符详解

一、基本数据类型

C 语言提供了丰富的基本数据类型,用于存储不同类型的数据,主要包括整数类型、浮点类型和布尔类型。

1. 整数类型

整数类型用于存储整数,根据是否带符号以及占用存储空间的不同,可进一步细分:

类型名 占用存储空间 数值范围
char 1 字节 -128 到 127 或者 0 到 255
unsigned char 1 字节 0 到 255
signed char 1 字节 -128 到 127
short 至少 2 字节 -32,768 到 32,767
unsigned short 至少 2 字节 0 到 65,535
int 至少 2 字节 通常与机器字长一致
unsigned int 至少 2 字节 0 到 4,294,967,295(32 位系统)
long 至少 4 字节 -2,147,483,648 到 2,147,483,647
unsigned long 至少 4 字节 0 到 4,294,967,295
long long 至少 8 字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long 至少 8 字节 0 到 18,446,744,073,709,551,615

2. 浮点类型

浮点类型用于存储带小数点的数值,有单精度和双精度之分:

类型名 占用存储空间 精度 数值范围
float 4 字节 约 6-7 位有效数字 ±1.2E-38 到 ±3.4E+38
double 8 字节 约 15-16 位有效数字 ±2.2E-308 到 ±1.8E+308
long double 8 字节或更多 至少和 double 一样高 取决于具体实现

3. 布尔类型

C 语言原本没有专门的布尔类型,不过在 C99 标准中引入了_Bool类型,并且可以通过包含stdbool.h头文件使用bool别名:

类型名 占用存储空间 取值
_Bool 1 字节 0(假)或 1(真)
bool 1 字节 false 或 true

二、各种变量的格式占位符

在使用printfscanf等函数时,需要使用格式占位符来指定数据的输出和输入格式。

1. 常用的格式占位符

  • int:%d
  • double:%lf
  • float:%f
  • long long:%lld

2. 整数占位符

整数占位符用于处理不同类型的整数数据:

占位符 对应数据类型 说明
%d int 以十进制形式输出有符号整数
%i int 与 % d 相同,也用于输出十进制整数
%u unsigned int 以十进制形式输出无符号整数
%o unsigned int 以八进制形式输出无符号整数
%x unsigned int 以十六进制形式输出无符号整数(小写字母)
%X unsigned int 以十六进制形式输出无符号整数(大写字母)
%ld long 以十进制形式输出长整型
%lu unsigned long 以十进制形式输出无符号长整型
%lld long long 以十进制形式输出长长整型
%llu unsigned long long 以十进制形式输出无符号长长整型

3. 浮点占位符

浮点占位符用于处理浮点数数据:

占位符 对应数据类型 说明
%f float/double 以十进制小数形式输出(默认 6 位小数)
%e float/double 以科学计数法形式输出(小写 e)
%E float/double 以科学计数法形式输出(大写 E)
%g float/double 自动选择 % f 或 % e 中更简洁的形式输出
%G float/double 自动选择 % f 或 % E 中更简洁的形式输出

4. 字符与字符串占位符

字符与字符串占位符用于处理字符和字符串数据:

占位符 对应数据类型 说明
%c char 输出单个字符
%s char* 输出字符串,直到遇到 \0 结束
%p void* 输出指针地址(以十六进制形式)

5. 其他占位符

其他占位符用于特殊需求:

占位符 对应数据类型 说明
%% 输出百分号 % 本身
%n int* 将已输出的字符数存储到指定的整型指针中

6. 格式控制选项

在 % 和占位符之间,还可以使用一些修饰符来更精确地控制输出格式:

  • 宽度控制:例如%5d表示输出宽度为 5 的整数,不足部分用空格填充。
  • 精度控制:例如%.2f表示输出保留两位小数的浮点数。
  • 对齐方式:例如%-10s表示左对齐输出宽度为 10 的字符串。
  • 符号控制:例如%+d表示输出带符号的整数,正数也会显示 + 号。
  • 填充字符:例如%05d表示用 0 填充宽度不足的部分,如输出 00042。

7. 注意事项

  • 在使用scanf读取字符串时,%s会在遇到空格、制表符或换行符时停止读取。若要读取包含空格的字符串,可以使用%[^\n]
  • 占位符要和对应变量的类型相匹配,否则可能会导致未定义行为。
  • %n是一个比较特殊的占位符,使用时需要格外小心,因为它可能会引发安全漏洞。
  • 对于long long类型,在 Windows 系统的某些编译器中可能需要使用%I64d

三、系统函数调用

在 C 语言中,可以使用system("")函数来调用系统命令,该函数需要包含头文件stdlib.h

1. 常用系统指令

  • cls:清屏
  • pause:按任意键继续
  • cmd:打开 cmd

2. 其他命令(win 系统命令不区分大小写)

以下是一些常用的 Windows 系统命令:

  • ASSOC:显示或修改文件扩展名关联
  • ATTRIB:显示或更改文件属性
  • BREAK:设置或清除扩展式 CTRL+C 检查
  • BCDEDIT:设置启动数据库中的属性以控制启动加载
  • CACLS:显示或修改文件的访问控制列表 (ACL)
  • CALL:从另一个批处理程序调用这一个
  • CD:显示当前目录的名称或将其更改
  • CHCP:显示或设置活动代码页数
  • CHDIR:显示当前目录的名称或将其更改
  • CHKDSK:检查磁盘并显示状态报告
  • CHKNTFS:显示或修改启动时间磁盘检查
  • COLOR:设置默认控制台前景和背景颜色
  • COMP:比较两个或两套文件的内容
  • COMPACT:显示或更改 NTFS 分区上文件的压缩
  • CONVERT:将 FAT 卷转换成 NTFS,你不能转换当前驱动器
  • COPY:将至少一个文件复制到另一个位置
  • DATE:显示或设置日期,后面加/t表示显示日期
  • DEL:删除至少一个文件
  • DIR:显示一个目录中的文件和子目录
  • DISKPART:显示或配置磁盘分区属性
  • DOSKEY:编辑命令行、撤回 Windows 命令并创建宏
  • DRIVERQUERY:显示当前设备驱动程序状态和属性
  • ECHO:显示消息,或将命令回显打开或关闭
  • ENDLOCAL:结束批文件中环境更改的本地化
  • ERASE:删除一个或多个文件
  • EXIT:退出 CMD.EXE 程序 (命令解释程序)
  • FC:比较两个文件或两个文件集并显示它们之间的不同
  • FIND:在一个或多个文件中搜索一个文本字符串
  • FINDSTR:在多个文件中搜索字符串
  • FOR:为一组文件中的每个文件运行一个指定的命令
  • FORMAT:格式化磁盘,以便用于 Windows
  • FSUTIL:显示或配置文件系统属性
  • FTYPE:显示或修改在文件扩展名关联中使用的文件类型
  • GOTO:将 Windows 命令解释程序定向到批处理程序中某个带标签的行
  • GPRESULT:显示计算机或用户的组策略信息
  • GRAFTABL:使 Windows 在图形模式下显示扩展字符集
  • HELP:提供 Windows 命令的帮助信息
  • ICACLS:显示、修改、备份或还原文件和目录的 ACL
  • IF:在批处理程序中执行有条件的处理操作
  • LABEL:创建、更改或删除磁盘的卷标
  • MD:创建一个目录
  • MKDIR:创建一个目录
  • MKLINK:创建符号链接和硬链接
  • MODE:配置系统设备
  • MORE:逐屏显示输出
  • MOVE:将一个或多个文件从一个目录移动到另一个目录
  • OPENFILES:显示远程用户为了文件共享而打开的文件
  • PATH:为可执行文件显示或设置搜索路径
  • PAUSE:暂停批处理文件的处理并显示消息
  • POPD:还原通过 PUSHD 保存的当前目录的上一个值
  • PRINT:打印一个文本文件
  • PROMPT:更改 Windows 命令提示
  • PUSHD:保存当前目录,然后对其进行更改
  • RD:删除目录
  • RECOVER:从损坏的或有缺陷的磁盘中恢复可读信息
  • REM:记录批处理文件或 CONFIG.SYS 中的注释 (批注)
  • REN:重命名文件
  • RENAME:重命名文件
  • REPLACE:替换文件
  • RMDIR:删除目录
  • ROBOCOPY:复制文件和目录树的高级实用工具
  • SET:显示、设置或删除 Windows 环境变量
  • SETLOCAL:开始本地化批处理文件中的环境更改
  • SC:显示或配置服务 (后台进程)
  • SCHTASKS:安排在一台计算机上运行命令和程序
  • SHIFT:调整批处理文件中可替换参数的位置
  • SHUTDOWN:允许通过本地或远程方式正确关闭计算机
  • SORT:对输入排序
  • START:启动单独的窗口以运行指定的程序或命令
  • SUBST:将路径与驱动器号关联
  • SYSTEMINFO:显示计算机的特定属性和配置
  • TASKLIST:显示包括服务在内的所有当前运行的任务
  • TASKKILL:中止或停止正在运行的进程或应用程序
  • TIME:显示或设置系统时间,后面加/t表示显示时间
  • TITLE:设置 CMD.EXE 会话的窗口标题,如TITLE 你想改成啥
  • TREE:以图形方式显示驱动程序或路径的目录结构,如TREE D:
  • TYPE:显示文本文件的内容,如TYPE D:\\文本.txt
  • VER:显示 Windows 的版本
  • VERIFY:告诉 Windows 是否进行验证,以确保文件正确写入磁盘
  • VOL:显示磁盘卷标和序列号
  • XCOPY:复制文件和目录树
  • WMIC:在交互式命令 shell 中显示 WMI 信息

四、运算符优先级

C++ 运算符的优先级决定了表达式中运算符的计算顺序,以下是 C 语言中运算符的优先级列表,按照从高到低的顺序排列,同一行中的运算符具有相同的优先级:

优先级 运算符 结合性
优先级 1 ::(作用域解析) 从左到右
优先级 2 ++、--(后缀) ()(函数调用) [](数组下标) .(成员访问) ->(通过指针的成员访问) 从左到右
优先级 3 ++、--(前缀) +、-(一元) !、~(逻辑非、按位取反) (type)(强制类型转换) *(解引用) &(取地址) sizeof new、delete 从右到左
优先级 4 .、->(成员指针访问) 从左到右
优先级 5 *、/、%(乘、除、取模) 从左到右
优先级 6 +、-(加、减) 从左到右
优先级 7 <<、>>(位左移、位右移) 从左到右
优先级 8 <、<=、>、>=(关系比较) 从左到右
优先级 9 ==、!=(相等性比较) 从左到右
优先级 10 &(按位与) 从左到右
优先级 11 ^(按位异或) 从左到右
优先级 12 `(按位或) 从左到右
优先级 13 &&(逻辑与) 从左到右
优先级 14 ||(逻辑或) 从左到右
优先级 15 ?:(三元条件) 从右到左
优先级 16 =、+=、-=、*=、/=、%= <<=、>>=、&=、^=、`= 从右到左
优先级 17 ,(逗号) 从左到右

注意事项

  1. 优先级高的运算符先计算,例如a + b * c中,乘法先计算,因为*的优先级高于+
  2. 结合性决定相同优先级运算符的计算顺序,例如赋值运算符是右结合的,因此a = b = c等价于a = (b = c)
  3. 使用括号()可以强制改变计算顺序,例如(a + b) * c中加法先计算。
  4. 逻辑运算符&&||具有短路特性,即当结果可以提前确定时,不会计算后续表达式。
相关推荐
coding随想42 分钟前
JavaScript中的BOM:Window对象全解析
开发语言·javascript·ecmascript
黑听人1 小时前
【力扣 简单 C】70. 爬楼梯
c语言·leetcode
念九_ysl1 小时前
Java 使用 OpenHTMLToPDF + Batik 将含 SVG 遮罩的 HTML 转为 PDF 的完整实践
java·开发语言·pdf
杜子不疼.1 小时前
二分查找,乘法口诀表,判断闰年,判断素数,使用函数实现数组操作
c语言
yaoxin5211231 小时前
124. Java 泛型 - 有界类型参数
java·开发语言
liulilittle2 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
88号技师2 小时前
2025年6月一区-田忌赛马优化算法Tianji’s horse racing optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
勤奋的知更鸟2 小时前
Java 编程之模板方法模式
java·开发语言·模板方法模式
十年编程老舅2 小时前
跨越十年的C++演进:C++20新特性全解析
c++·c++11·c++20·c++14·c++23·c++17·c++新特性
上单带刀不带妹3 小时前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架