【无标题】C语言变量,类型转换,运算符,输入和输出

嵌入式学习Day3|C语言变量、类型转换、运算符、输入输出完整的复盘

嵌入式学习第三天,今天系统啃完C语言变量定义、数据类型转换、全套运算符、输入输出函数,都是写代码最基础、每天都会用到的基本功。

一、变量的定义规范

1.变量定义格式

数据类型 变量名;

  • 数据类型:分为基本数据类型、构造数据类型,决定变量占用内存大小

  • 变量名命名规则

  1. 只能由字母、数字、下划线构成,不能以数字开头

  2. 不能和C语言关键字重名(int、if、for这类不能做变量名)

  3. 尽量不和库函数重名

  4. 命名做到见名知意,推荐驼峰法、下划线命名(嵌入式Linux内核大量使用下划线命名)

2.各类变量定义写法

1.整型:short / unsigned short / int / unsigned int / long / unsigned long

2.浮点型:float(4字节)、double(8字节高精度)

3.字符型:char、unsigned char(串口、字符处理高频)

4.布尔类型:需要头文件 #include <stdbool.h> ,bool var;

3.变量初始化

1.初始化:定义变量的时候直接给初值

2.赋值:定义完成之后,再给变量写入数值

⚠️重点提醒:局部变量不初始化,里面是随机垃圾值!写代码一定要初始化变量,严禁直接使用未初始化变量

二、表达式与混合数据类型运算

1.表达式:运算符把常量、变量连接组成的式子,表达式一定有类型、一定有结果值

2.自动隐式类型转换规则(低精度→高精度)

转换优先级从小到大:

char、short → int → long → unsigned → float → double

  • char、short运算时,会强制转为int计算

  • float运算时,会强制提升为double运算

一句话:运算的时候,小类型自动向大类型看齐,避免计算丢失精度

3.强制类型转换(显式转换)

格式: (目标类型)变量/表达式

人为强制改变数据类型,使用时要注意精度丢失问题。

三、C语言全套运算符

1.算数运算符

    • * / % ++ --
  • %取余运算符:只能对整数使用,浮点不能取余

  • 自增自减: i++ 先使用值,再+1; ++i 先+1,再使用值

课堂练习题:给定数字2389,取出千、百、十、个位数字求和,练习取余和除法运算。

2.赋值运算符

= += -= *= /= %=

  • 左值:等号左边,只能放变量,常量、表达式不能放左边

  • 右值:等号右边,变量、常量、表达式都可以

混合赋值的坑点:

1.整型赋值给浮点:自动扩展精度

2.浮点赋值给整型:直接舍弃小数点后面所有数据

3.大数据放进小空间:直接截断高位数据,数值会出错(char ch = 355就是典型截断例子)

3.逗号运算符

格式: (表达式1,表达式2,表达式3)

从左向右依次执行,最终结果取最后一个表达式的值

4.sizeof运算符

作用:计算数据类型/变量占用内存空间大小,单位是字节

sizeof(int); sizeof(a);

嵌入式超级重要!写驱动、数组、内存拷贝经常要用sizeof计算长度。

5.运算符优先级

优先级排序:括号 > 单目运算符 > 双目运算符 > 三目运算符 > 赋值 > 逗号

记不住优先级,直接多加小括号,代码可读性更高,不容易出错。

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

必须引入头文件 #include <stdio.h>

1.单字符IO函数

  1. putchar() :输出单个字符到终端,只能输出1个字符

  2. getchar() :从键盘读取单个字符,回车才结束输入

课堂练习:小写字母转大写,利用getchar接收,putchar打印输出

2.格式化IO

  • printf():格式化打印,%d %c %f控制输出格式

  • scanf():格式化键盘输入,注意变量前面必须带&取地址符号

3.字符串IO

gets()、puts():专门用来读取、输出一整行字符串

注意:gets函数存在缓冲区溢出风险,实际项目开发不推荐使用。

📝今日学习感悟

前两天熟悉Linux、gcc编译,今天正式深耕C语言基础语法!

我刚开始写代码出莫名其妙bug,根源就是:变量忘记初始化、类型转换截断数据、运算符优先级搞错。嵌入式底层开发对数据类型极其敏感,char、int、unsigned用错,寄存器读取直接出错。

基础语法看着简单,但是每一条规则都要亲手敲代码验证,多做课堂练习加深印象。明天继续C语言判断、循环语句。

相关推荐
Logic1013 小时前
C语言/数据结构位运算题解:异或XOR找出独特卡片数字——只出现一次的元素
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
代码王同学4 小时前
2026.9.15日C++类和对象学习收获笔记
c语言·c++
irislinAmelia4 小时前
Day11文章_多路视频流加权公平调度与令牌桶QoS
c语言·人工智能
云泽80817 小时前
STM32 USART 详解(八):C I/O 串口重定向原理与实现
c语言·stm32·嵌入式硬件
ThornArmor18 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
T1mzhou18 小时前
ARM64 Linux 6.10 内核驱动(12):dd.c:probe/ remove、延迟 probe
linux·服务器·c语言·arm开发·arm
白色的北极熊19 小时前
c语言 scanf 输入流有空格,逗号 说明
c语言
Logic10119 小时前
C语言/数据结构位运算题解:异或XOR找出货船中的“独特载货量“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
xx~t1 天前
嵌入式——51单片机3
linux·c语言·嵌入式硬件·51单片机