变量 与 变量或常量 可以进行运算 组成表达式。
一、算术运算符
运算符 | 含义 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 自增 |
-- | 自减 |
1.基本算术运算
前5个基本含义和数学上相同
不同的是:
整型除以整型结果还是整型,小数部分直接去掉
即 5/2
的结果是2
,不是2.5
,也不是3
想要得到小数部分就要用 浮点型
即 5.0/2.0
的结果才是2.5
#include
int main() {
int a = 100;
int b = 6;
printf("a + b == %d\n", a+b );
printf("a - b == %d\n", a-b );
printf("a * b == %d\n", a*b );
printf("a / b == %d\n", a/b );
printf("a %% b == %d\n", a%b );//输出%要用%%
return 0;
}
2.自增自减运算
自增与自减同理,所以这里只说自增。
变量的自增运算就是变量本身+1
单独使用时这4条语句是一样的:
++a;
,a++;
,a=a+1;
,a+=1;
(a为变量)
混和其他运算符一起使用时有区别:
前置:++a
先自增再运算
后置:a++
先运算再自增
例如:
c=++a;
等价于a++; c=a; //自增;赋值;
c=a++;
等价于c=a; a++; //赋值;自增;
#include
int main() {
int a = 100;
int b = 6;
int c=0;
printf("自增自减(单独作为语句使用)\n");
printf("a == %d b == %d\n", a,b );
a++;
b--;
printf("a == %d b == %d\n", a,b );
printf("\n\n");
printf("自增自减(嵌套使用)\n");
printf("a == %d\n", a );
c=a++;//先赋值a的值给c,a再自增,所以c的是自增前的a
printf("c == %d,a==%d\n", c,a);
c=++a;//a先自增,再赋值a的值给c,所以c的是自增后的a
printf("c == %d,a==%d\n", c,a);
return 0;
}
二、赋值运算符
运算符 | 含义 | 举例 |
---|---|---|
= | 赋值 | i=5; 表示 设置变量i的值为5 |
+= | 相加后赋值 | i+=5; 等同于i=i+5 |
-= | 相减后赋值 | i-=5; 等同于i=i-5 |
*= | 相乘后赋值 | i*=5; 等同于i=i*5 |
/= | 相除后赋值 | i/=5; 等同于i=i/5 |
%= | 取余后赋值 | i%=5; 等同于i=i%5 |
三、关系运算符
关系运算符的运算结果只有两种 1
(代表真)和 0
(代表假)
运算符 | 含义 | 举例 |
---|---|---|
== | 是否相等 | 5==5 的结果为1 |
!= | 是否不等 | 5!=5 的结果为0 |
> | 是否大于 | 6>5 的结果为1 |
< | 是否小于 | 6<5 的结果为0 |
>= | 是否大于或等于 | 4>=5 的结果为0 |
<= | 是否小于或等于 | 4<=5 的结果为1 |
注意区分
=
和==
,分别是 赋值 和 比较是否相等。
#include
int main() {
int a=0,b=999,c;
printf("%d\n",4>5);//0
printf("%d\n",6>5);//1
printf("%d\n",a>=0);//1
printf("%d\n",a!=b);//1
c= (6>5);
printf("%d\n",c);//1
c= (b==999);
printf("%d\n",c);//1
return 0;
}
四、逻辑运算符
运算符 | 含义 | 举例 |
---|---|---|
| | | 或:有一个为真,运算结果就为真 | 1||0 的值为1 |
&& | 且:同时为真,运算结果才为真 | 1&&0 的值为0 |
! | 非:真变成假,假变成真 | !0 的值为1 |
#include
int main() {
/* 或且非 随便挑一个意思理解
和数学上集合的 并集,交集,补集 差不多。
和物理上: “或” 像 开关并联,“且” 像开关串联,也差不多。
*/
int a=0,b=999,c;
//判断b是否大于5 或者 a<10 有一个满足 结果就是1 , 一个都不满足 结果就是0
printf("%d\n",a>5||a<10);//1
//判断b是否在0到100
printf("%d\n",b>0&&b<1000);//1
//判断b是否为0,1,2
printf("%d\n",b==0||b==1||b==2);//0
return 0;
}
六、位运算符
数值在计算机中是以二进制存储的。
如 42对应二进制为00101010
,其中的每一个1或0 叫做一个位
运算符 | 含义 | 示例 |
---|---|---|
<< | 左移位:将数字的二进制每一个位左移 | 00101010<<1 的值为01010100 |
>> | 右移位:将数字的二进制每一个位右移 | 00101010<<1 的值为00010101 |
& | 与:两个位为1时,结果位才为1 | 00101010 & 10101010 的值为00101010 |
| | 或:有一个位为1,结果位就为1 | 0110 丨1100 的值为1110 |
~ | 取反:1变成0,0变成1 | ^100 的值为011 |
^ | 异或:相同为1,不同为0 | 0011^1110 的值为0010 |
#include
int main() {
int a=0,b=999,c;
//判断b是否大于5 或者 a<10 有一个满足 结果就是1 , 一个都不满足 结果就是0
printf("%d\n",a>5||a<10);//1
//判断b是否在0到100
printf("%d\n",b>0&&b<1000);//1
//判断b是否为0,1,2
printf("%d\n",b==0||b==1||b==2);//0
return 0;
}
六、运算符嵌套
就是几个运算符组合成一个语句。
就像小学混合四则运算一样。
那么他们运算就有先后顺序
如 a=b!=4
实际上是a = ( b!=4 )
也就是先判断b!=4
然后再赋值给a
而不是先赋值再判断。
不想记就尽量把语句拆开用。
下一篇:C语言程序的基本结构