C语言要点—— 运算符

一、“||""&&"的短路规则
1、||从左向右开始计算,当遇到为真的条件时停止计算,整个表达式为真,所有条件为假时表达式为假。
2、&&从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假,所有条件为真时表达式才为真。

二、“!”运算符
C语言中的逻辑符“!”只认得0,只知道见了0就返回1,因此当其作用的值不是0时,其结果为0。
eg:
int main()
{
printf("%d\n", !0);             //打印值为1
printf("%d\n", !1);             //打印值为1
printf("%d\n", !100); //打印值为0
printf("%d\n", !-1000);         //打印值为0
}

三、位运算符
1、左移运算符<<将运算数的二进制位左移。
规则:高位丢弃,低位补0。
2、右移运算符>>把运算符的二进制位右移。
规则:高位补符号位,低位丢弃。
3、避免位运算符,逻辑运算符和数学运算符同时出现在一个表达式。
4、当为运算符,逻辑运算符和数学运算符需要同时参与运算时,尽量使用括号()来表达计算次序。
5、左移n位相当于乘以2的n次方,但效率比数学运算符高。
右移n位相当于除以2的n次方,但效率比数学运算符高。
### 关系运算与逻辑运算概述 关系运算是指用于比较两个操作数并返回布尔值的操作。常见的关系运算符有 `>` (大于), `<` (小于), `>=` (大于等于), `<=` (小于等于), `==` (等于) 和 `!=` (不等于)[^1]。 逻辑运算则是通过组合多个条件来形成更复杂的决策结构。主要的逻辑运算符包括: - **&&**:表示逻辑与,当且仅当两侧表达式都为真时结果才为真。 - **||**:表示逻辑或,只要有一个表达式为真则整个表达式就为真。 - **!** :表示逻辑非,用来取反一个布尔表达式的真假性。 ### 表达式求解实例 对于给定的具体表达式计算如下: #### 判断表达式的结果 1. \( 100 > 1 \, &&\,'a'>'b'\) 此处\(100>1\)成立而\('a'> 'b'\) 不成立(因为字母表顺序上 a 小于 b),所以最终结果为 0. 2. \( 100 > 1 || 'a' > 'b'\) 虽然 `'a' > 'b'` 是假命题,但由于左侧的 `100 > 1` 成立,则整体表达式为真即 1. 3. !(\(100 > 1)\) 因为 \(100 > 1\) 显然是真的,对其应用逻辑非 (!) 后得到的是假,也就是 0. #### 构造特定条件下满足要求的表达式 针对不同情况构建相应的关系/逻辑表达式: 1. n 等于或大于90但小于100 可写作 `(n >= 90 && n < 100)`. 2. ch 不是 q 或 z 的形式可以写成 `ch != 'q' && ch != 'z'`. 3. 对于 ch 属于小写字母范围却不等于 q 这一情形可以用 `(ch >= 'a' && ch <= 'z') && ch != 'q'`. 4. 如果要描述 ch 不属于小写字母区间内的情况,那么就是 !(ch >= 'a' && ch <= 'z'). #### 计算其他给出的表达式 考虑一些额外的例子及其解析过程: 1. \(5 > 3\) 结果显然为 1. 2. \(3 + 4 > 2 && 3 < 2\) 中前半部分是真的而后半句却是错的;因此依据逻辑与(&&)规则得知该复合语句的整体评估结果应为 0. 3. 当涉及到变量 x 和 y 之间的大小对比时,如果两者相等的话,无论采用哪种方式都会得出相同结论——即要么全都是 true (1)要么全部 false(0)。这里假设x和y均为整型数值,具体取决于实际赋值状况. 4. d = 5 + (\(6 > 2\)) ,由于括号内的测试成功故此加法操
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值