嵌入式系统学习Day3(C语言中的运算符与表达式)
字符形式含义换行,将当前位置移到下一行开头水平制表(跳到下一个Tab位置)退格,将当前位置移到前一列回车,将当前位置移到本行开头换页,将当前位置移到下页开头代表一个反斜杠字符 "\"代表一个单引号(撇号)字符代表一个双引号字符1到3位八进制数所代表的字符1到2位十六进制数所代表的字符。
一.转义字符
字符形式 含义
\n 换行,将当前位置移到下一行开头
\t 水平制表(跳到下一个Tab位置)
\b 退格,将当前位置移到前一列
\r 回车,将当前位置移到本行开头
\f 换页,将当前位置移到下页开头
\\ 代表一个反斜杠字符 "\"
\' 代表一个单引号(撇号)字符
\" 代表一个双引号字符
\ddd 1到3位八进制数所代表的字符
\xhh 1到2位十六进制数所代表的字符
二.运算符
1.算术运算
1.加法 +
eg:3+5、+3
2.减法 -
eg:5-2、-3
3.乘法 *
eg:3 * 5
4.除法 /
eg:5/3
两个整型数相除 ,最终结果相当于是整除的效果。注意:被除数不能为0。
5.求余 %
两个整数相除的结果为整数,如 5/3 的结果值为 1,舍去小数部分。
1.对一个整形常量N求余,其范围是【0~n-1】
2.N%n ,其中n不能为0
6.自增++自减--
作用是使变量的值增 1 或减 1
例如: ++i, --i //先加后用
i++,i-- //先用后加
注意:
1. 先用后加 还是 先加后用 ,必须是 ++ 参与到别的运算中
2. 浮点类型 也可以 自增 自减
3. 自增、自减 运算数 必须是左值
4. 表达式 i++ , ++i
i++ //先用(表达式的结果) 后加 i
++i //先加i,后用(表达式的结果)
7.运算中的数据类型转换
表达式都是有结果有数据类型的,例如4/2的结果为2,那5/2的结果呢?结果是2,因为2和5都是整形型常量所以相除的结果也是整形常量。那如果不同数据类型的两个常量相除,它的结果又是什么数据类型呢?
隐式类型转换 :在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。如字符数据 必定先转换为整数,short 型转换为 int 型,float 型数据在运算 高 时一律先转换成双精度型,以提高运算精度(即使是两个 float 型数据相加,也先都化成 double 型,然后再相加)。纵向的箭头表示当运算对象为不同类型时转换的方向。 例如 int 型与 double 型数据进行运算,先将 int 型的数据转换 低 成 double 型,然后在两个同类型(double 型)数据间进行运算, 结果为 double 型。

强制类型转换:
eg:(类型)运算数
运算效果:
将运算数的类型转换为()中指定的类型
注意:
强转不会影响运算数本身 ,本质上是个运算结果
8.贪心原则
i+++i ,根据贪心原则,此表达式应从左到右逐个扫描, 将扫描到的字符尽可能多的结合成c语言的运算符,所以其运算顺序应是(i++) + i
i ++ ++ + i,运算顺序应是((i++)++) + i
下面为谭浩强作者《C程序设计》第三版中的内容
2.赋值运算
1. 赋值运算符
赋值符号"="就是赋值运算符,它的作用是将一个数据赋给一个变扯。如"a=3"的 作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以将一个表达式 的值赋给一个变世。
左值=值
运算:
将右边的值,给到左边的左值空间中
左值,充当运算的结果值
a=(b=(c=1))
2. 类型转换
(1) 将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分。
(2) 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。
(3) 将一个 double 型数据赋给 float 变量时,截取其前面 7 位有效数字,存放到 float 变量的存储单元(4 个字节)中。但应注意数值范围不能溢出。
(4) 字符型数据赋给整型变量时,由于字符只占 l 个字节,而整型变量占 2 个字节, 因此将字符数据(8 个二进制位)放到整型变量存储单元的低 8位中。
(5) 将一个 int、short、long 型数据赋给一个 char 型变量时,只将其低 8 位原封不动地送到 char型变扯 (即截断)。
(6) 将带符号的整型数据(int 型)赋给 long 型变量时,要进行符号扩展,将整型数的 16 位送到 long 型低 16 位中,如果 int 型数据为正值(符号位为 0)'则 long 型变量的高 16 位补0;如果int 型变量为负值(符号位为1)则 long 型变量的高 16 位补 1,以保持数值不 改变。反之,若将一个 long 型数据赋给一个 int 型变量,只 将 long 型数据中低 16 位原封不动地送到整型变量(即截 断)。
(7) 将 unsigned int 型数据赋给 long int 型变量时,不存在符号扩展问题,只需将高 位补 0 即可。将 unsigned 型 变量的内容原样送到非 unsigned 型变量中,但如果数据范围超过相应整型的范围,则会 出现数据错误。
(8) 将非 unsigned 型数据赋值给长度相同的 unsigned 型变量,也是原样赋值(连原 有的符号位也作为数值一起传送)。

3.逗号运算
逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为:表达式1,表达式2,表达式3,...,表达式n 。整个逗号表达式的值为最后一个表达式n的结果。其实,逗号表达式无非是把若干个表达式”串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值。

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)