
前言前两日吃透 Linux 操作、gcc 四步编译、C 语言基础数据类型今天 Day3 深入程序核心变量规范、初始化、隐式/强制类型转换、全套运算符、printf/scanf/getchar/putchar 输入输出覆盖嵌入式 C 最常用的运算与交互逻辑配套课堂练习题拆解新手一次性吃透。一、变量完整知识点1. 变量底层原理程序运行时变量在内存中开辟一块对应数据类型大小的存储空间变量名是内存空间别名通过变量名读写内存里的数据程序结束变量内存自动回收。2. 变量使用铁律先定义后使用未初始化的变量内存是随机垃圾值严禁直接使用。3. 变量命名规范嵌入式开发标准允许字符、数字、下划线三大限制不能以数字开头不能和 C 语言关键字重名尽量不与库函数printf、main 等重名。两种行业命名风格Linux/GNU 风格内核、嵌入式常用下划线分隔temp_val、max_num驼峰命名上层应用TempVal、MaxScore核心原则见名知意可读性优先。4. 变量定义与初始化定义数据类型 变量名;intnum;floatf;charch;bool flag;// 需要引入头文件 #include stdbool.h初始化定义时直接赋值inta10;floatb3.14f;赋值定义完成后修改值inta;a100;二、表达式与数据类型转换1. 表达式特性由常量、变量、运算符组合而成任何表达式必有值、必有对应类型。2. 混合运算自动转换隐式转换运算时两边类型不一致低精度自动转为高精度统一计算转换优先级从低到高char/short → int → unsigned int → long → float → double特殊规则char、short 参与运算强制提升为 intfloat 参与运算强制提升为 double浮点精度永远高于整型无符号高于有符号。3. 强制类型转换显式转换语法(目标类型)变量/表达式inta10;floatb(float)a;// int转float风险高精度转低精度会丢失数据小数截断、高位直接截取。4. 赋值转换规则整型赋值浮点自动补小数精度扩展浮点赋值整型直接舍弃小数部分有符号/无符号互相赋值直接拷贝内存二进制正负可能翻转大数据存入小空间截断低位极易出现数值异常。示例坑点charch355;// char仅1字节截取355二进制低8位输出为负数printf(ch %d\n,ch);三、全套运算符详解1. 算数运算符 - * / % --/整型相除直接舍去小数仅保留整数浮点除法保留小数%取余只能用于整型float/double 不能取余自增自减区分i后置先使用原值运算结束后自增 1i前置先自增 1再使用新值、--仅能作用于变量不能写(ab)。课堂练习题数字拆分求和定义int num2389取出千、百、十、个位并求和打印。2. 赋值运算符基础复合赋值 - * / %左值只能是变量能放在等号左边可修改内存常量、表达式不能做左值右值常量、变量、表达式均可。3. 逗号运算符语法表达式1,表达式2,表达式3...执行顺序从左至右依次运算整体结果为最后一个表达式的值。intres(12,34,56);// res最终等于114. sizeof 运算符作用获取变量/类型占用内存字节数编译阶段计算不运行代码。sizeof(int);floatf;sizeof(f);打印专用格式符%zu。5. 运算符优先级速记括号 单目运算符 双目 三目 赋值 逗号双目内部优先级算数 移位 关系 位运算 逻辑四、输入输出函数stdio.h 必备1. 单字符 IOputchar / getcharputchar功能终端输出单个字符参数ASCII 数值/字符常量返回值打印字符的 ASCII 码int 类型限制一次只能输出一个字符。putchar(A);putchar(65);getchar功能从键盘读取一个字符典型练习输入小写字母转大写输出原理小写 a-z 比大写 A-Z ASCII 大 32ch-32即可转换。2. 格式化printf / scanfprintf格式化打印%d %f %c %s %zu等格式符scanf键盘读取数据变量前必须加取地址区分重点printf中%f兼容 float、doublescanf严格区分float 用%fdouble 用%lf。3. 字符串puts、getsputs输出字符串自带换行gets读取整行字符串实际开发存在安全漏洞仅课堂演示。五、今日重点作业拆解题目定义a37b64拼接出新数字3476规则千位a 的十位百位b 的个位十位a 的个位个位b 的十位分步计算a37个位37%10 7十位37/10 3b64个位64%10 4十位64/10 6组合3*1000 4*100 7*10 6 3476完整代码示例#includestdio.hintmain(void){inta37,b64;inta_shia/10;inta_gea%10;intb_shib/10;intb_geb%10;intnew_numa_shi*1000b_ge*100a_ge*10b_shi;printf(拼接结果%d\n,new_num);return0;}六、今日学习总结变量必须初始化命名遵循嵌入式规范先定义后使用混合运算自动类型转换高精度存低精度数据会丢失自增、取余、逗号、sizeof 是笔试高频运算符分清前后置 区别putchar/getchar 轻量化单字符交互嵌入式底层调试常用数字拆分依靠/整除、%取余是必考题型。后续学习预告下一节学习关系运算符、逻辑运算符、if 分支判断语句正式进入程序逻辑控制。标签#嵌入式学习 #C语言Day3 #C语言变量 #C语言运算符 #printf scanf #Linux C 开发