hello 大家好欢迎来到我的博客之前我们认识了常见的数据类型同时也学会了如何让使用变量。认识了数据接下来就要学习操作数据的工具——操作符此篇给大家讲解常见操作符其他复杂操作符后续给大家单独讲解一、什么操作符C 语言标准中操作符Operator是语法上的终结符token用于指定对一个或多个操作数operand执行的运算或操作这些操作包括计算、赋值、类型转换、内存访问、表达式求值控制等。比如我们常见的、、都属于操作符。操作符与操作数结合构成表达式expression每个操作符的行为、优先级、结合性、类型转换规则均由标准明确规定。二、操作数与表达式2.1 操作数标准定义操作符执行运算时作用的数据实体是运算的 “输入值”。常量操作数如5、3.14、A变量操作数如 age、num表达式操作数如ab*6中操作数 a、b、ab、6 、ab*6 表达式本身也可以作为操作数2.2 表达式标准定义由操作符 操作数按语法规则组合而成能够计算出一个值的语法单元。类型示例说明算术表达式a b、x * 3用算术操作符组合结果为数值关系表达式a b、x 5用关系操作符组合结果为0假或1真逻辑表达式a b x 10用逻辑操作符组合结果为0或1存在短路求值赋值表达式a 10、x 3用赋值操作符组合结果为赋值后的值逗号表达式a 1, b 2, a b用逗号操作符组合结果为最后一个表达式的值三、常见操作符一 算数操作符 - * / %、-、* 操作符与数学中使用方法无区别这里不为大家做过多的了解。1/整数相除舍去小数只取整数部分如果希望得到浮点数两个运算数中至少有一个浮点数例如5/225/22.5 舍去小数0.5 5.0/22.55/2.02.5结果的符号 同号得正异号得负除数不能为 02%取模/余运算符返回两个整数相除的余值。注意%只能用于整数不能用于浮点数结果的符号取决于被除数也就是第一个数除数不能为 0例如11%5111/52余1 取余结果为111%-52 -11%5-2二赋值操作符 - * / % | ^连续赋值abc3复合赋值先运算再赋值例如aa10 等价于 a10bb*5 等价于 b*5三单目操作符常见单目操作符 -- -sizeof单目操作符仅有一个操作数1自增前置a 先后使用后置a 先使用后注当a与a单独使用时 a与a 一样例如int a5 a 等于 a2自减前置----a 先--后使用后置--a-- 先使用后--同上这里不再给大家做过多解释。3 正与负 -4sizeof 操作符求类型 / 变量所占字节是操作符不是函数四关系操作符 !常用来判断两个值的关系注意C语言中关系的结果只有两种:真 —1 假—0是判断相等是赋值例如a5 判断a是否等于5 a5 给变量a赋值为5五逻辑操作符 || 用于组合条件的判断结果为1或01逻辑与 判断的是“并且”关系两边都为真1结果才为真1只要有一个条件为假0结果就为假0短路在A B中如果表达式 A 的结果为假0那么编译器会直接判定整个表达式为假不再去执行或计算表达式 B2逻辑或 ||判断的是“或者”关系只要有一个条件为真1结果就为真1两边都为假0结果才为假0短路如果||左边的表达式结果为真1那么右边的表达式就不会再执行整个表达式的结果直接为 1。3逻辑非改变单个表达式的真假如果操作数为真非0结果为假0如果操作数为假0结果为真1六条件操作符条件操作符是C语言中“唯一 一个三目操作符”需要三个操作数表达式1 ? 表达式2 : 表达式3如果表达式1为真表达式2结果是整个表达式结果如果表达式1为假表达式3结果是整个表达式结果七逗号操作符表达式1, 表达式2, ..., 表达式n从左至右一次执行每个表达式整个逗号表达式的结果是最后一个表达式的值八下标引用、函数调用和结构体成员访问操作符下标引用操作符[]用于数组。例如arr[5][]就是操作符arr和5是操作数。函数调用操作符()用于调用函数。例如printf(Hello)()就是操作符结构体成员访问.通过结构体变量访问成员。例如stu.name。-通过结构体指针访问成员。例如p_stu-name。结构体篇详细讲四、操作符的优先级与结合性敲黑板这个知识点非常重要优先级当一个表达式中出现了多个运算符时决定运算符谁先算结合性左结合/ 右结合当多个优先级相同的运算符连续出现时决定从哪边算左结合从左至右算右结合从右至左算常用优先级与结合性优先级运算符结合性操作符名称1()[]-.左结合括号、数组、结构体成员2!--*sizeof右结合逻辑非、自增减、指针、取地址、求字节大小3*/%左结合乘、除、取余4-左结合加、减5左结合大小比较6!左结合相等、不等判断7左结合逻辑与8||左结合逻辑或9?:右结合三目条件运算10-*/右结合赋值运算11,左结合逗号运算大家可以通过这个网站进行全面的学习https://en.cppreference.com/w/c/language/operator_precedence优先级小tips在写代码的过程中不确定优先级就加来控制运算顺序此篇到这里就结束了感谢大家的观看感谢与我共同进步的你们