目录
位运算
规则
符号 | 描述 | 运算规则 |
---|---|---|
& | 与 | 两个位都为1时,结果才为1;否则,结果为0。 |
| | 或 | 两个位都为0时,结果才为0;否则,结果为1。 |
示例
#include <stdio.h>
int main()
{
int x = 3, y = 2, z = 2;
x = (y & z);
printf("执行‘&’运算: x = %d\n", x);
x = (y | z);
printf("执行‘|’运算: x = %d\n", x);
}
十进制下的"2",在二进制下的表示为"10"。,按上面的位运算符计算规则,得出的结果如下:
运行结果如下:
在计算位运算的时候,唯一麻烦的是需要把十进制的数,转换成二进制的数来计算,最后,再把结果转回十进制。
逻辑运算
规则
a && b:a和b同时为true 才返回 true, 否则返回false;
a || b:a或b任意一个为true 就返回true , 否则返回false。
示例
#include <stdio.h>
int main()
{
int x = 3, y = 2, z = 2;
x = (y && z);
printf("执行‘&&’运算: x = %d\n", x);
x = (y || z);
printf("执行‘||’运算: x = %d\n", x);
}
逻辑运算虽然执行的过程也是先转换位二进制,然后,逐位比较,最后再转回十进制。但比位运算省事儿的是,它可以一眼区分出结果(因为就比较个异同),不必必须转成二进制后,才可以看出结果。
三元操作符
规则
三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。
说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
其逻辑为:“如果条件表达式成立或者满足则执行表达式1,否则执行第二个。”常用在设置默认值,例如某个值不一定存在,则判断这个值是否存在,不存在给默认值(表达式2)。
示例1
#include <stdio.h>
int main()
{
int x = 3, y = 2, z = 2;
x = (y == z) ? 4 : 5;
printf("执行三元操作符: x = %d\n", x);
//x = (y == z) ? 1 : (y < z) ? 2 : 3;
//printf("执行两次三元操作符: x = %d\n", x);
}
示例2
如果三元运算符连用呢?
#include <stdio.h>
int main()
{
int x = 3, y = 1, z = 2;
x = (y == z) ? 1 : (y < z) ? 2 : 3;
printf("执行两次三元操作符: x = %d\n", x);
}
如果连用的话,看起来复杂,但还是和遵循三元运算符的规则,首先,“y == z”的比较,如果为真,返回1,如果为假,开始执行"(y<z)?2:3",在执行这个的时候,还是继续判断,如果“y<z”为真,则返回2,否则,返回3。
需要强调的是,这样运用三元运算符,可以替代条件判断 if/else/else if 的组合。