4.C语言--操作符

发布时间:2026/7/27 8:15:56

4.C语言--操作符 一、基础算数操作符普通算数运算符 - * / %、-、* 常规加减乘/ 整数相除向下取整% 取模只能用于整数符合赋值运算符 - * / %先运算、再赋值简化代码写法。单目自增、自减 –分为前置、后置只需要一个操作数属于单目运算符。二、逻辑运算符 || 逻辑与全真才真有假则假|| 逻辑或全假才假有真则真具有短路特性 前面为假后面不执行|| 前面为真后面不执行三、移位操作符只针对整数移位操作符是操作二进制位的运算符只能用于整数类型。左移 规则左边高位丢弃右边低位补0效果等价于 ×2右移 分为两种逻辑右移左边补0右边丢弃算数右移左边补符号位右边丢弃口诀正数两种右移效果一致负数算数右移会向上取整效果等价于 ÷2复合移位赋值四、位操作符全部针对二进制位运算 按位与| 按位或^ 按位异或~ 按位取反按位与 两个二进制位都为1结果才为1按位或 |只要有一个是1结果就是1按位异或 ^相同为0不同为1经典公式a ^ a 00 ^ a a按位取反 ~所有二进制位 0变11变0五、不创建临时变量交换两个整数异或经典用法原理利用异或 a^a0 、 0^aaaa^b;ba^b;aa^b;实现无中间变量交换两数六、统计二进制中1的个数三种方法方法一取模右移法适合正数intmain(){intn0;scanf(%d,n);intcount0;while(n){if(n%21){count;}n1;}printf(%d,count);return0;}方法二按位遍历32位正负整数都适用intmain(){intn0;scanf(%d,n);intcount0;for(inti0;i32;i){if((n(1i))!0){count;}}printf(%d,count);return0;}方法三n (n-1) 清零法最优核心n (n-1) 消除二进制最后一个1intmain(){intn;scanf(%d,n);intcount0;while(n){count;nn(n-1);}printf(%d,count);return0;}七、逗号表达式语法 表达式1, 表达式2, 表达式3…规则从左到右依次执行整个逗号表达式结果 最后一个表达式结果八、下标访问操作符 []双目操作符需要两个操作数用法 数组[下标]九、函数调用操作符 ()可接收多个操作数函数名 () 实现调用十、操作符优先级与结合性规则单目运算符右结合赋值运算符右结合三目运算符右结合其余大多为左结合优先级决定谁先算结合性决定同级从哪边开始算。十一、表达式求值规则表达式求值顺序受三种因素影响优先级结合性类型转换整型提升CPU默认按int运算短字节类型需要整型提升无符号高位补0有符号高位补符号位寻常算数转换类型自动提升顺序由低类型自动向高类型转换intunsigned intlong intunsigned long intfloatdoublelong double运算时低精度向高精度靠拢保证精度不丢失。十二、总结C语言操作符是编程底层核心移位、位运算、整型提升、算数转换是考试、笔试高频考点。掌握位运算可以实现无变量交换数值快速统计二进制1的个数高效底层位操作是后期指针、底层开发、算法优化的基础。

相关新闻