變量 與 變量或常量 可以進(jìn)行運(yùn)算 組成表達(dá)式典奉。
一、算術(shù)運(yùn)算符
運(yùn)算符 | 含義 |
---|---|
+ | 加 |
- | 減 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 自增 |
-- | 自減 |
1.基本算術(shù)運(yùn)算
前5個(gè)基本含義和數(shù)學(xué)上相同
不同的是:
整型除以整型結(jié)果還是整型悯舟,小數(shù)部分直接去掉
即 5/2
的結(jié)果是2
,不是2.5
窖贤,也不是3
想要得到小數(shù)部分就要用 浮點(diǎn)型
即 5.0/2.0
的結(jié)果才是2.5
#include <stdio.h>
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.自增自減運(yùn)算
自增與自減同理,所以這里只說自增潦嘶。
變量的自增運(yùn)算就是變量本身+1
單獨(dú)使用時(shí)這4條語句是一樣的:
++a;
,a++;
崇众,a=a+1;
掂僵,a+=1;
(a為變量)
混和其他運(yùn)算符一起使用時(shí)有區(qū)別:
前置:++a
先自增再運(yùn)算
后置:a++
先運(yùn)算再自增
例如:
c=++a;
等價(jià)于a++; c=a; //自增;賦值;
c=a++;
等價(jià)于c=a; a++; //賦值;自增;
#include <stdio.h>
int main() {
int a = 100;
int b = 6;
int c=0;
printf("自增自減(單獨(dú)作為語句使用)\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;
}
二眯漩、賦值運(yùn)算符
運(yùn)算符 | 含義 | 舉例 |
---|---|---|
= | 賦值 |
i=5; 表示 設(shè)置變量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
|
三芹扭、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有兩種 1
(代表真)和 0
(代表假)
運(yùn)算符 | 含義 | 舉例 |
---|---|---|
== | 是否相等 |
5==5 的結(jié)果為1
|
!= | 是否不等 |
5!=5 的結(jié)果為0
|
> | 是否大于 |
6>5 的結(jié)果為1
|
< | 是否小于 |
6<5 的結(jié)果為0
|
>= | 是否大于或等于 |
4>=5 的結(jié)果為0
|
<= | 是否小于或等于 |
4<=5 的結(jié)果為1
|
注意區(qū)分
=
和==
,分別是 賦值 和 比較是否相等赦抖。
#include<stdio.h>
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;
}
四舱卡、邏輯運(yùn)算符
運(yùn)算符 | 含義 | 舉例 |
---|---|---|
| | | 或:有一個(gè)為真,運(yùn)算結(jié)果就為真 |
1||0 的值為1
|
&& | 且:同時(shí)為真队萤,運(yùn)算結(jié)果才為真 |
1&&0 的值為0
|
! | 非:真變成假轮锥,假變成真 |
!0 的值為1
|
#include<stdio.h>
int main() {
/* 或且非 隨便挑一個(gè)意思理解
和數(shù)學(xué)上集合的 并集,交集要尔,補(bǔ)集 差不多舍杜。
和物理上: “或” 像 開關(guān)并聯(lián)新娜,“且” 像開關(guān)串聯(lián),也差不多既绩。
*/
int a=0,b=999,c;
//判斷b是否大于5 或者 a<10 有一個(gè)滿足 結(jié)果就是1 概龄, 一個(gè)都不滿足 結(jié)果就是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;
}
六旁钧、位運(yùn)算符
數(shù)值在計(jì)算機(jī)中是以二進(jìn)制存儲(chǔ)的。
如 42對(duì)應(yīng)二進(jìn)制為00101010
互拾,其中的每一個(gè)1或0 叫做一個(gè)位
運(yùn)算符 | 含義 | 示例 |
---|---|---|
<< | 左移位:將數(shù)字的二進(jìn)制每一個(gè)位左移 |
00101010<<1 的值為01010100
|
>> | 右移位:將數(shù)字的二進(jìn)制每一個(gè)位右移 |
00101010<<1 的值為00010101
|
& | 與:兩個(gè)位為1時(shí)歪今,結(jié)果位才為1 |
00101010 & 10101010 的值為00101010
|
| | 或:有一個(gè)位為1,結(jié)果位就為1 |
0110 丨1100 的值為1110
|
~ | 取反:1變成0颜矿,0變成1 |
^100 的值為011
|
^ | 異或:相同為1寄猩,不同為0 |
0011^1110 的值為0010
|
#include<stdio.h>
int main() {
int a=0,b=999,c;
//判斷b是否大于5 或者 a<10 有一個(gè)滿足 結(jié)果就是1 , 一個(gè)都不滿足 結(jié)果就是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;
}
六、運(yùn)算符嵌套
就是幾個(gè)運(yùn)算符組合成一個(gè)語句箍铭。
就像小學(xué)混合四則運(yùn)算一樣泊柬。
那么他們運(yùn)算就有先后順序
如 a=b!=4
實(shí)際上是a = ( b!=4 )
也就是先判斷b!=4
然后再賦值給a
而不是先賦值再判斷。
不想記就盡量把語句拆開用诈火。