运算符用于执行代码的运算
算数运算符
算数运算符用于处理四则运算
+加 如 int a = 10; int b =10; int c = a+b;
-减 如 int a = 10; int b =10; int c = a-b;
*乘 如 int a = 10; int b =10; int c = a*b;
/除 如 int a = 10; int b =10; int c = a/b; (不能除0,会导致异常)
%取余 如 int a = 10; int b =4; int c = a%b; c = 4 取余数
++自增 a++ 先赋值再加一 ++a 先加一再赋值
如 int a = 1;
int b =1;
printf("a++:%d\n++b:%d",a++,++b); --> a=1,b=2
printf("\na:%d\nb:%d",a,b);-->a=2 b=2
--自减
如 int a = 1;
int b =1;
printf("a--:%d\n--b:%d",a--,--b); a--:1,--b:0
printf("\na:%d\nb:%d",a,b); a:0,b:0
赋值运算符
赋值运算符用于将表达式的值赋给变量
= 赋值运算符 如 int a = 12;将12赋值给a
+=加等于 如 int a = 10; a += 5(a=a+5)
-=减等于 如 int a = 10; a -= 5(a=a-5)
*=乘等于 如 int a = 10; a *= 5(a=a*5)
/=除等于 如 int a = 10; a /= 5(a=a/5)
%=取余等于 如 int a = 10; a %= 5(a=a%5)
比较运算符
== 相等 如 int a = 10;int b = 20; bool bFlag = a == b;若相等,则表达式 a == b返回Ture即1
否则返回False即0
!= 不等于 如int a = 10;int b = 20; bool bFlag = a != b;如上
> 大于 如int a = 10;int b = 20; bool bFlag = a > b;
< 小于 如int a = 10;int b = 20; bool bFlag = a < b;
>= 大于等于 如int a = 10;int b = 20; bool bFlag = a >= b;
<= 小于等于 如int a = 10;int b = 20; bool bFlag = a <= b;
位运算符 (运用于二进制数据下)
以下内容详解查阅汇编语言内容
& 位与运算符 (计算器 AND)
如 10101010 &
11110101
结果 10100000
int nRes = 0b10101010 & 0b11110101(0b表此数据为二进制数据)
相同位置数字一样则结果位置也为同样数字 ,否则为0
| 位或运算符
如 10101010 |
11110100
11111110 才算0
int nRes = 0b10101010 | 0b11110100
相同位置有一个1便是1,只有俩0
~ 位非运算符
如 ~10101010
结果 01010101
^ 异与运算符(同样的位置都是0或1时,结果相同位置为0,)
10101010 ^
11110100
01011110
int nRes = ~0b10101010
异或加密:两个值不相同,则异或结果为1;两个值相同,异或结果为0。所以根据异或的运算规则,在二进制中,相同为0,不同为1。
char szA = 'A';
char szB = 'B';
char szT = szA ^ szB;
printf("%X %c %c",szT,(szA^szT),(szB^szT))
结果 3 B A
<< 左移运算符
00000001 << 5
00100000
>> 右移运算符
10010000 >>3 当符号位为1时,右移的每一位都补1
11110010
00010000 >>3 当符号位为0时,右移的每一位都补0
00000010
逻辑运算符
逻辑运算符用于根据表达式的值返回真值或假值
应用运用ture或者false时,需要添加头文件stdbool.h
&& 逻辑与
bool bFlag = (10 >5) && (10>6) Ture
|| 逻辑或
bool bFlag = (10 >5) ||(10>12) Ture 一个为ture则结果就为ture
!逻辑非
bool bFlag = ture;
bFlag = ! ture;
结果为 false
三目运算符
三目运算符可以用于实现简单的判断
语法: 表达式1 ? 表达式2 :表达式3
如果表达式1的值为真,执行表达式2,并返回表达式2的结果; 如果表达式1的值为假,执行表达
式3,并返回表达式3的结果。
如下一个例子说明
int a = x < y ? c : d
如果x<y为ture 则赋值c给a
如果x<y为false 则赋值d给a
作业
作业:
1.使用sizeof计算昨天学习过的所有类型的数据宽度,并且打印(字节和位 int 4字节 32位)
2.i和j分别输出的内容是什么,为什么会产生这样的结果?
int i = 1;
int j = 1;
printf("%d\n%d", i++, ++j);
前置++,先运算后赋值。
后置++,先赋值后运算
3.编写一个程序,判断是否是闰年,条件是非整百年:能被4整除的就是闰年,整百年:能被400整除的是闰年。
4.计算100 / 3的余数是多少?(编程)
5.0b01001001 & 0b11111111 结果是多少?(手算)
0b01001001
6.0b10101010 ^ 0x123123 结果是多少?(手算)
计算机算 12 3189
7.一年约(365 * 24 * 60 * 60)秒,输入一个人的年龄,输出活了多少秒?
8.1英寸等于2.54厘米,输入一个人的身高(英寸),输出厘米单位的身高。
9.实现异或加密的基本逻辑,对任意值进行加密处理。