news 2026/7/23 5:44:31

【Linux+C 语言学习 Day03】C 语言变量、类型转换、运算符与字符 IO 全解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux+C 语言学习 Day03】C 语言变量、类型转换、运算符与字符 IO 全解

文章目录

  • 前言
  • 一、C 语言变量核心知识点
    • 1. 变量定义概念
    • 2. 变量命名规范
    • 3. 不同类型变量定义格式
    • 4. 初始化与赋值区别
  • 二、表达式与数据类型转换
    • 1. 表达式基础定义
    • 2. 混合运算自动转换规则
    • 3. 两种类型转换方式
    • 4. 赋值时数据截断 / 扩展规则
  • 三、C 语言全部常用运算符详解
    • 1. 算术运算符
    • 2. 赋值运算符
    • 3. 逗号运算符
    • 4. sizeof 运算符
    • 5. 运算符优先级(从高到低)
  • 四、标准输入输出函数(stdio.h)
    • 1. 必备头文件
    • 2. 字符IO函数:putchar /getchar
    • 3. 格式化 IO 与字符串 IO
  • 总结
    • 1. 今日掌握核心内容
    • 2. 学习难点梳理

前言

前两日学习了 Linux 基础操作、gcc 编译流程与 C 语言基础数据类型,今天从变量知识点开始,完整学习变量规范、表达式运算、隐式 / 强制类型转换、全部常用运算符,以及 stdio 库下字符输入输出函数,本篇整理全部学习内容与个人学习总结。

一、C 语言变量核心知识点

1. 变量定义概念

变量是程序运行过程中值可以发生改变的量,程序运行时会在内存中开辟专属存储空间,通过变量名读写内部数据;变量必须先定义,后使用。

2. 变量命名规范

1)变量名仅支持字母数字下划线,存在硬性约束:不能以数字开头;
2)禁止和 C 语言关键字重名,尽量不与库函数重名(如printf不建议作为变量名);
3)推荐见名知意,两种主流命名风格:
驼峰命名:TempVal、MaxNum
Linux 下划线命名:temp_val、avg_score

3. 不同类型变量定义格式

// 整型变量 short var;unsigned short var;int var;unsigned int var;long var;unsigned long var;// 浮点型变量 float var;double var;// 字符型变量 char var;unsigned char var;// 布尔变量(需引入头文件stdbool.h)#include <stdbool.h>bool var;

4. 初始化与赋值区别

1)初始化:定义变量时直接赋予初始值(推荐所有变量初始化,避免随机垃圾值)

intnum=10;

2)赋值:变量定义完成后,通过=修改存储空间内数据

intnum;num=10;

重要注意:未初始化的变量内存中是随机值,业务代码严禁直接使用。

二、表达式与数据类型转换

1. 表达式基础定义

由常量、变量通过运算符连接组成的式子,所有表达式同时具备数据类型两个属性。

2. 混合运算自动转换规则

运算时两端数据类型不一致,低精度类型会自动转为高精度统一运算:
1)char/short参与运算自动提升为int
2)float参与运算自动提升为double
3)精度优先级从高到低:

double>float>unsigned long>long>unsigned int>int>char/short

4)同字节长度下:无符号类型精度高于有符号类型。

3. 两种类型转换方式

1)隐式转换:混合运算、赋值时系统自动完成,无需手动书写;
2)强制(显式)转换:手动指定目标类型,格式(数据类型)变量/表达式

inta=20;doubleb=(double)a;

4. 赋值时数据截断 / 扩展规则

1)整型赋值浮点:扩展精度,小数位补 0;
2)浮点赋值整型:直接舍弃小数点后所有数据;
3)有符号、无符号互赋:直接拷贝内存二进制,不做数值换算;
4)小数存入大空间:有符号数扩展符号位,无符号数补 0;
5)大数存入小空间:仅保留二进制低位,可能出现正负翻转。

三、C 语言全部常用运算符详解

1. 算术运算符

符号:+ - * / % ++ --核心关键点:
%取余运算符仅支持整数,浮点数不能使用;
后置自增i++:先使用原值,运算结束后自增 1;
前置自增++i:变量先自增 1,再使用新值;
++/--只能作用于变量,常量不支持。

2. 赋值运算符

基础赋值:=;复合赋值:+= -= *= /= %=
左值:等号左侧只能是变量(可修改内存),常量、表达式不能作为左值;
右值:变量、常量、运算表达式均可放在等号右侧。

3. 逗号运算符

语法:(表达式1,表达式2,表达式3)
执行逻辑:从左到右依次执行所有表达式,整个逗号表达式最终结果等于最后一个表达式的值。

4. sizeof 运算符

作用:计算变量 / 数据类型在内存中占用的字节数;

inta=0;sizeof(int);// 获取int类型字节大小sizeof(a);// 获取变量a字节大小

5. 运算符优先级(从高到低)

括号 > 单目运算符 > 双目运算符 > 三目运算符 > 赋值运算符 > 逗号运算符
双目内部细分优先级:算数 > 移位 > 关系 > 位运算 > 逻辑

四、标准输入输出函数(stdio.h)

1. 必备头文件

所有输入输出函数必须引入标准 头文件

#include<stdio.h>

2. 字符IO函数:putchar /getchar

putchar()
功能:终端输出单个字符;
参数:字符常量、字符变量、ASCII 数字均可;
返回值:输出字符对应的 ASCII 码(int 类型);
限制:单次只能输出一个字符。
getchar()
功能:从键盘读取单个输入字符。

3. 格式化 IO 与字符串 IO

格式化:printf()格式化输出、scanf()格式化输入;
字符串
:gets()读取一行字符串、puts()输出字符串并自动换行。

总结

1. 今日掌握核心内容

1)吃透 C 语言变量完整规范:命名、定义、初始化,理解未初始化变量的风险;
2)掌握混合运算隐式转换、强制类型转换两种转换方式与精度升降规则;
3)熟练区分算术、赋值、逗号、sizeof 运算符用法,分清前置 / 后置自增差异;
4)熟记运算符优先级,能判断复杂表达式执行顺序;
5)掌握putchar、getchar底层字符输入输出,理解基础字符交互逻辑。

2. 学习难点梳理

1)自增、自减运算符极易出错前置++i和后置i++执行顺序完全不同,在复合表达式、循环里混用很容易算错结果。
二者核心区别是 “先计算再使用” 还是 “先使用再计算”,如果不单独拆分代码测试,很容易混淆逻辑,写出不符合预期的代码。
2)putchar 的使用逻辑初期难以理解刚开始学习时产生疑惑:putchar 定义是输出字符,但直接传入数字(ASCII 码)也能在终端打印出对应文字。一开始没有把字符和 ASCII 码绑定理解,不清楚计算机底层存储字符本质是数字,导致无法理解为什么数字参数能输出字符,经过多次实操才理清底层原理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 5:39:51

HybridSim:毫米波人体感知数字孪生框架原理与实战

在毫米波人体感知技术快速发展的今天&#xff0c;开发者们面临着一个共同的挑战&#xff1a;如何在保证感知精度的同时&#xff0c;有效降低数据采集成本和模型训练复杂度。传统方法往往需要在真实环境中部署大量硬件设备进行数据采集&#xff0c;不仅成本高昂&#xff0c;还受…

作者头像 李华
网站建设 2026/7/23 5:35:17

SolidWorks自学避坑指南与高效学习路线

1. 为什么自学SolidWorks容易踩坑&#xff1f;我见过太多人兴致勃勃地开始自学SolidWorks&#xff0c;结果三个月后软件都没装明白。这不是危言耸听——根据Autodesk的调研数据&#xff0c;62%的自学者在基础建模阶段就放弃了。问题出在哪&#xff1f;首先是安装环节就埋了雷&a…

作者头像 李华
网站建设 2026/7/23 5:35:05

嵌入式以太网控制器(EMAC)寄存器详解与驱动开发实战

1. EMAC模块寄存器概览与设计哲学在嵌入式网络开发领域&#xff0c;以太网控制器&#xff08;EMAC&#xff09;模块是连接微控制器与物理网络的桥梁。它远不止是一个简单的数据搬运工&#xff0c;而是一个高度可配置、具备复杂状态管理和流量控制能力的智能硬件单元。其核心控制…

作者头像 李华
网站建设 2026/7/23 5:34:48

July模型实战指南:从环境配置到批量任务稳定性优化

这类新模型上线时&#xff0c;最值得先看的不是功能列表&#xff0c;而是它到底解决了什么实际问题、在普通环境下能不能稳定跑起来&#xff0c;以及和现有方案相比有什么关键差异。Cola 上线的 July 模型&#xff0c;被拿来和 Fable、Claude Opus 放在一起讨论&#xff0c;但实…

作者头像 李华
网站建设 2026/7/23 5:34:19

CDN技术演进:突破传统认知的三大关键能力

1. CDN的边界争议&#xff1a;为什么总有人说"CDN不能做"&#xff1f;在技术社区里&#xff0c;关于CDN能力的争论从未停止。每当有人提出用CDN解决特定场景需求时&#xff0c;总会出现"CDN不能做这个"的反对声音。这种观点通常源于三个认知误区&#xff1…

作者头像 李华