?C 語言運算符的總結
一、算術運算
c語言一共有34種運算符径密,包括了常見的加減乘除
1.加法運算 +
? # 除了能做加法運算午阵,還能表示正號:+5
2.減法運算 -
?# 除了能做減法運算,還能表示符號:-5
3.乘法運算 *
? # 注意符號享扔,不是x,而是*
4.除法運算/
?# 注意符號底桂,不是÷,也不是\,而是/
?# 整數(shù)除于整數(shù)惧眠,還是整數(shù)籽懦。(5/3的值:1)
?# 除數(shù)與被除數(shù)有一個為小數(shù),商為小數(shù)氛魁;
?5.取余運算%
?# 什么是取余:兩個整數(shù)相除之后的余數(shù)
?# %兩側只能是整數(shù)
?# 正負性取決于%左側值 (-2%3余數(shù)為:-2暮顺;2%-3余數(shù)為:2)
?6.注意點
* 自動類型轉換
?int a = 10.6;? ? ? ? a = 10;
?int b = 10.5 + 1.7;? b = 12;
?自動將大型轉換為了小數(shù)類型,會丟失精度
* 自動類型提升
?int b = 10.5 +10;? ? b = 20;
?將右邊的10 提升為了double類型
?double b = 1.0/2;? ? b = 0.5;
? 解決除法的精度問題
* 強制類型轉換
?double a = (double)(1/2);? a = 0;
?double b = (double)1/2;? a = 0.5;
* 運算順序
?# 表達式
?# 結合性(結合方向):2+3+4
?# 優(yōu)先級:先加減后乘除秀存,5+4*8-3
二捶码、賦值運算
1. 簡單賦值
? ? ? ? * int a = 10 +5;的運算過程
? ? ? ? * a = b = 10;的運算過程
? ? ? ? * 等號左邊不能是常量;(如:10 = 11)
2.復合賦值
? ? ? ? * 復合減乘除余:a+=4(等同于 a = a+4应又;)宙项,a-=4;同理
三、自增自減
1.簡單使用
? ? ? ? * ++自增運算符株扛。如a++ ,++a 都是等價于a = a+1
? ? ? ? * 自減運算符尤筐。如a--,--a,都等價于 a= a-1
? ? ? ? * 5++ 是錯誤的
2. ++a和a++的區(qū)別
? ? ? ? a++:a參與運算之后再加1;
? ? ? ? ++a:a加1之后再參與運算洞就;
? ? ? ? int a = 10;int b = a++; 運行結果:b = 10;a = 11;
? ? ? ? int a = 10;int c = ++a; 運行結果:c = 11;a = 11;
?四 盆繁、sizeof
1.作用
?用來計算一個變量或者一個常量、一種數(shù)據類型所占的內存字節(jié)數(shù)旬蟋。
2.基本形式
?* sizeof(變量\常量)
?* sizeof 變量\常量
?* sizeof(數(shù)據類型)
?NSInteger length = sizeof(100);? ? //length = 4;
?NSInteger aaa2 = sizeof(9000000);? //4
?NSInteger aaa3 = sizeof(int);? ? ? //4
?NSInteger aaa4 = sizeof(NSInteger); //8
?NSInteger aaa5 = sizeof(double);? ? //8
?NSInteger aaa6 = sizeof(float);? ? //4
五油昂、 關系運算(比較運算)
1.條件判斷
? ? ? ? * 默認情況下,我們在程序中寫的每一句正確代碼都會被執(zhí)行倾贰。但很多時候冕碟,我們想在某個條件成立的情況下才執(zhí)行某一段代碼
? ? ? ? * 這種情況的話可以使用條件語句來完成,但是我們暫時不學習條件語句匆浙,先來看看一下更基礎的知識:如何來判斷一個條件成不成立安寺。
2.真假(true/false)
? ? ? ? * 在C語言中,條件成立稱為”真“首尼,條件不成立稱為”假“挑庶,因此言秸,判斷條件是否成立,就是判斷條件的”真假“迎捺。
? ? ? ? * 怎么判斷真假呢举畸? c語言規(guī)定,任何數(shù)值都真假性凳枝,任何非0值都為”真“抄沮,只有0才為”假“。也就是說范舀,108合是,-18,4.5锭环、-10.5等都是”真“聪全,0則是”假“。
3.關系比較
? ? ? ? * 開發(fā)中經常要比較辅辩,比如斗地主游戲中牌的大小难礼。利用關系運算符就可以比較兩個值的大小。
? ? ? ? * 關系運算符的運算結果只有2種:如果條件成立玫锋,結果就是1蛾茉,也就是”真“;如果條件不成立撩鹿,結果就為0谦炬,也就是”假“
4.使用注意
? ? ? ? * 關系運算符中 ==、节沦!=的優(yōu)先級相等键思,<、<=甫贯、>吼鳞、>=的優(yōu)先級相等,且前者的優(yōu)先級低于后者:2==3>1
? ? ? ? * 關系運算符的結合方向為”從左往右“:4>3>2
? ? ? ? * 關系運算符的優(yōu)先等級 小于 算術運算符:3+4>8-2
?六叫搁、邏輯運算
? ? ? ? * 有時候赔桌,我們需要在多個條件同時成立的時候才能執(zhí)行某段代碼,比如:用戶只有同時輸入了qq和qq密碼渴逻,才能執(zhí)行登陸代碼疾党,,如果只輸入了QQ或者只輸入了密碼惨奕,就不能執(zhí)行登陸嗲碼仿贬。這中情況下,我們需要借助C語言提供的邏輯運算符墓贿。
? ? ? ? * 邏輯運算的結果只有2個:”真“為1茧泪,”假“為0
1.&&邏輯與
? ? ? ? * 使用格式
?# ”條件A&&添加B“
? ? ? ? * 運算結果
?# 只有當條件a和添加b成立時,結果才為1聋袋,也就是”真“队伟;其余情況的結果都為0,也就是”假“幽勒。因此嗜侮,條件A或者添加B只要有一個不成立,結果都為0啥容,也就是”假“
? ? ? ?*運算過程
?# 總是先判斷條件A是否成立
?#如果添加A成立锈颗,接著再判斷條件B是否成立:如果添加B成立,”條件A&&B“的結果為1咪惠,即”真“击吱,如果條件B不成立,結果就是0遥昧,即”假“
?# 如果條件A不成立覆醇,就不會再去判斷條件B是否成立:因為條件A已經不成立了,不管條件B如何炭臭,”條件A&&條件B“的結果肯定是0永脓,也就是”假“
? ? ? ?*舉例
?邏輯與的結合方向是”自左至右“ 。比如表達式(a>3)&&(a<5)
?# 若a的值是4:先判斷a>3,成立:再判斷a<5,成立鞋仍。因此為1
?# 若a的值是2:先判斷a>3常摧,不成立,停止判斷威创。因此結果為0
* 注意
?# 若想判斷a的值是否在(3, 5)范圍內落午,千萬不能寫成33) && (a<5)
?# C語言規(guī)定:任何非0值都為“真”,只有0才為“假”那婉。因此邏輯與也適用于數(shù)值板甘。比如 5 && 4的結果是1,為“真”详炬;-6 && 0的結果是0盐类,為“假”
2.||邏輯或
?* 使用格式
? ”條件A||條件B“
* 運算結果
? 當條件A或者條件B只要由一個成立時(也包括添加A和條件B都成立),結果就為1呛谜,也就是”真“在跳;只有當條件A和條件B都不成立時,結果才為0隐岛,也就是”假“猫妙。
* 運算過程
?總是先判斷添加A是否成立
?# 如果條件A成立,就不會再取判斷條件B是否成立:因為條件A已經成立了聚凹,不管添加B如何割坠,”條件A“||"條件B"的結果肯定是1齐帚,也就是”真“。
? # 如果條件A不成立彼哼,接著再判斷條件B是否成立:如果條件B 成立对妄,”條件A“||”條件B“的結果就為1即”真“,如果添加B不成立敢朱,結果為0 即”假“
* 舉例
?邏輯或的結合方向是”自左至右“剪菱。比如表達式(a<3)||(a>5)
?# 若a的值是4:先判斷a<3,不成立拴签;再判斷a>5孝常,也不成立。因此結果為0
?# 若a的值是2:先判斷a<3蚓哩,成立构灸,停止判斷。因此結果為1
?# 因此杖剪,如果a的值在(-∞, 3)或者(5, +∞)范圍內冻押,結果就為1;否則盛嘿,結果就為0
* 注意
?C語言規(guī)定:任何非0值都為“真”洛巢,只有0才為“假”。因此邏輯或也適用于數(shù)值次兆。比如 5 || 4的結果是1稿茉,為“真”;-6 || 0的結果是1芥炭,為“真”漓库;0 || 0的結果是0,為“假”
3.! 邏輯非
?* 使用格式 “! 條件A”
?* 運算結果
?# 其實就是對條件A進行取反:若條件A成立园蝠,結果就為0渺蒿,即“假”;若條件A不成立彪薛,結果就為1茂装,即“真”。也就是說:真的變假善延,假的變真少态。
?*舉例
? # 邏輯非的結合方向是“自右至左”。比如表達式 ! (a>5)
?# 若a的值是6:先判斷a>5,成立易遣,再取反之后的結果為0
? # 若a的值是2:先判斷a>3,不成立彼妻,再取反之后的結果為1
?# 因此,如果結果的值大于5,結果就為0侨歉;否則屋摇,結果為1
?*注意
?# 可以多次連續(xù)使用邏輯非運算符:!(4>2)結果為0幽邓,是”假“摊册,!<昭蕖(4>2)結果為1,是”真“忘分,F逭怼!6事汀(4>2)結果為0
?# C語言規(guī)定:任何非0值都為”真“重斑,只有0才為假”0“。因此肯骇,對非0值進行邏輯非窥浪!運算的結果都是0,對0進行邏輯非笛丙!運算的結果為1漾脂。!5胚鸯、骨稿!6.7、姜钳!-9的結果都為0坦冠,!0結果為1.
4.優(yōu)先級
?* 邏輯運算符的優(yōu)先級別順利為:小括號() > 負號- > ! > 算術運算符 > 關系運算符 > && > ||
* 表達式!(3>5) || (2<4) && (6<1) :先計算 !(3>5)哥桥、(2<4)辙浑、(6<1),結果為1拟糕,式子變?yōu)? || 1 && 0判呕,再計算1 && 0,式子變?yōu)? || 0已卸,最后的結果為1
?* 表達式3+2<5||6>3 等價于 ((3+2) < 5) || (6>3)佛玄,結果為1
?* 表達式4>3 && !-5>2 等價于 (4>3) &&? ((!(-5)) > 2) ,結果為0
?七累澡、三元運算符
?*N目運算符->三目運算符
?# int a = 5?10:2;
?# 獲得a梦抢、b中的最大數(shù)
?#? 獲得a、b愧哟、c中的最大數(shù)
短綆不及深泉奥吩!