逻辑运算
初步认识
- 逻辑运算是对逻辑量进行的运算,结果只有0/1
- 逻辑量是关系运算或逻辑运算的结果
注意:下面的式子应该如何写成c的表达式
×:4<x<6
:他会从左至右依次计算,x>4的结果是一个逻辑值,是0/1
√:x>4&&x<6
- 如何判断一个字符c是否是大写字母?
- c>=‘A’&&c<=‘Z’
进一步理解
! age<20
!是单目运算符,优先级比<要高
所以先对!age进行运算,在判断是否小于20
- 优先级表格:
短路
- 逻辑运算是自左向右进行,如果左边的结果已经能决定结果,就不会做右边的计算
- a == 6&&b ==1
– 若左边不成立,则不判断b - a == 6&&b +=1
– 若左边不成立,则不对b赋值 - 对于&&,左边是false时就不做右边
- 对于||,左边是true时就不做右边
SO:不要把赋值,包括复合赋值组合进表达式
位运算
-
~:是取反,例如:0取反为1,1取反为0
-
&:按位与,例如:1&1=1 0&1=0
-
|:按位或,x|y只要有一个为1,则结果为1
. -
^:按位异或,x ^ y相等则为0,不等则为1
-
<<:是左移,例如:1<<n,表示1往左移n位,即结果为1*2^n
-
>>:是右移,类似左移,但数值除以2的n次方
解释:左右移,是按照二进制方式进行的,
手动分割线——————————
左移过程中有可能导致变化,例如:
1的二进制是:000…0001
执行该步骤后,1<<2
结果为,000…0100
四则运算
注意:除法运算
若相除的都是整数,则结果也为整数,小数部分省略:
8/3=2
如果两数中有一个位小数,则结果为小数:
2.0/5=0.400000
注意:取余运算
只适合两个整数进行运算:
10%3=1 √
10.0%3=1 ×
含负号的运算准则:两个数取余,余数总为正数
(-10)%3=2
10%(-3)=1
例如:
5%3=3x1+2,商为1,余数为2
(-5)%(-3)=(-3)x2+1,商为2,余数为1
5%(-3)=(-3)x(-1)+2,商为-1,余数为2
(-5)%3=3x(-2)+1,商为-2,余数为1
注意:c语言中没有乘方这个运算符,即不能使用^符号
逗号运算
#include <stdio.h>
int main(void)
{
int i;
i=(3+4,5+6);
printf("%d\n",i);
//当出warning时,i=11
return 0;
}
so:
i=(3+4,5+6) 逗号运算的结果是,逗号后面的东西
for(i=0,j=10;i<j;i++,j--)
//逗号运算的使用
bool运算
- 头文件:#include <stdbool.h>
- 之后就可以使用bool、true、false
自增自减运算符
a++/++a => a=a+1
a–/--a => a=a-1
三目运算
c语言中三目运算符:“?:”,
格式:
表达式1?表达式2:表达式3;
执行过程:
判断表达式1,为真则执行表达式2,为假则执行表达式3