今天还是老样子,先继续昨天的学习继续补充一些知识。
转义字符的使用
接下来就是今天的正题了
算术运算符
1.类型
+
-
*
/
% tps:只能运算整型,结果也是整型
++ ++a vs a++ 那个效率高?++a
--
2.优先级
在 C 语言中,运算符的优先级大致如下:
1. 括号 () :具有最高优先级,用于强制改变运算的顺序。
2. 单目运算符:包括逻辑非 ! 、按位取反 ~ 、自增 ++ 、自减 -- 、正号 + 、负号 - 、指针 * 、取地址 & 。
3. 乘除和取余: * (乘法)、 / (除法)、 % (取余)。
4. 加减: + (加法)、 - (减法)。
5. 移位操作: << (左移)、 >> (右移)。
6. 关系运算符: < (小于)、 > (大于)、 <= (小于等于)、 >= (大于等于)。
7. 相等性运算符: == (等于)、 != (不等于)。
8. 按位与 & 。
9. 按位异或 ^ 。
10. 按位或 | 。
11. 逻辑与 && 。
12. 逻辑或 || 。
13. 条件运算符 ? : 。
14. 赋值运算符 = 、 += 、 -= 、 *= 、 /= 等。
15.逗号运算符,
在 C 语言编程中,为了避免因运算符优先级导致的误解和错误,复杂的表达式可以适当使用括号来明确运算顺序。您是在 C 语言的学习过程中对这部分内容有疑问吗?
3.结合性
左值与右值
可定位的左---变量
不可定位的右---常量
贪心法则(i+++++i)从左向右=》((i++)++)+i,i++是右值所以不能编译成功
不建议写法printf("%d",i,i++); //至右向左
3.精度默认转换(隐式类型转换)
强制运行转换
(转换类型)转换目标
赋值运算
在 C 语言中,赋值运算使用“=”符号来完成。
基本的赋值运算形式为:
变量 = 表达式;
例如:
int a = 5; // 直接将整数 5 赋值给变量 a
int b;
b = a + 3; // 将变量 a 的值加上 3 的结果赋值给变量 b
赋值运算符还可以与其他运算符结合使用,形成复合赋值运算符,例如:
a += 2; // 等价于 a = a + 2
b -= 1; // 等价于 b = b - 1
c *= 4; // 等价于 c = c * 4
d /= 2; // 等价于 d = d / 2
e %= 3; // 等价于 e = e % 3
在赋值运算中,需要注意数据类型的匹配和可能出现的类型转换问题。
在 C 语言中,赋值运算主要有以下规则:
1. 类型一致性:通常情况下,赋值运算符两边的数据类型应该是兼容的。如果类型不兼容,C 语言可能会进行隐式类型转换,但这可能导致数据丢失或不准确的结果。(高位截断(长类型给短类型),精度丢失(高精度给低精度),符号位扩展(短类型给长类型,看最高位1补10补0))
2. 右值求值:在执行赋值操作时,先计算赋值号右边表达式的值,然后将其赋给左边的变量。
3. 变量初始化:未初始化的变量进行赋值操作是合法的,但使用未初始化的变量可能会导致未定义的行为。
4. 指针赋值:对于指针变量,赋值操作是将一个地址值赋给指针。
5. 数组和结构体赋值:对于数组,不能直接将一个数组整体赋值给另一个数组,但可以逐个元素进行赋值。对于结构体,可以通过结构体变量整体赋值的方式进行。
6. 复合赋值运算符:如 += 、 -= 等,其计算顺序是先进行运算,再进行赋值。
7. 常量不能被赋值:被 const 修饰的常量不能被重新赋值。
8. 赋值表达式的值:赋值表达式本身也有值,其值就是赋给左值的那个值。
逗号运算
在 C 语言中,逗号运算符( , )用于将多个表达式连接成一个表达式。
逗号运算符的主要特点和规则如下:
1. 逗号运算符会从左到右依次计算每个表达式的值。
2. 整个逗号表达式的值是最后一个表达式的值。
例如:
int a = 10, b = 20, c;
c = (a++, b++, a + b);
在上述例子中,首先计算 a++ ,此时 a 的值变为 11 ;然后计算 b++ , b 的值变为 21 ;最后计算 a + b ,其结果为 32 ,并将 32 赋值给 c 。
逗号运算符常用于 for 循环的控制表达式中,以实现多个变量的更新。