IOS階段學習第三天筆記(運算子),ios第三天
IOS學習(C語言)知識點整理筆記
1、運算子
一、算術運算子
1)運算式由變數、常量、運算子構成,有確定的類型和值
2)算術運算子包括: +(加),-(減),*(乘),/(除),%(模)
3)算術運算子優先順序 括弧()> * ,/ ,% >+,-
4)%表示取餘、模數 a%b 表示a除以b取餘數
5)整數相除保留兩位小數處理方法如: printf(“%.2f”,(float)14/9);
6)自增自減運算子:++;- -
7)a++ 與 ++a 的區別: ++a 傳回值是a+1, b=++a 相當於a=a+1然後b=a ; a++ 傳回值是 a ,b=a++ 相當於b=a 然後a=a+1
二、關係運算子
1)關係運算子包括: >, >=, <, <=, ==, !=
2)關係運算子比較結果成立是 1(true),不成立結果是0(false)
三、邏輯運算子
1)邏輯運算子包括:
&&(邏輯與/並且,要2者都成立才為真);
||(邏輯或/或者 只要一個條件滿足即為真);
!(邏輯非/不是) !(真)=假 !(假)=真 非0=真 邏輯運算子 一般與if連用
四、三目運算子
1)三目運算組成結構:(條件運算式)?(語句1):(語句2)
例如:c= a>b?a:b; 表示 取a b兩者中的最大值賦值給c
五、賦值運算子
1)賦值運算子包括:=,+= ,-=,*=,/=,%=
2)+= 表示前變數等於變數原有的值加上後面的值 例如:a+=b 表示 a=a+b;
六、逗號運算子
1)逗號運算子優先順序最低 例如 (運算式1、運算式2,.....,運算式n)=運算式n 取最後一個運算式
七、位(單bit)操作運算子
1) 按位與 & ; 按位或 | ;按位取反 ~ ;位移操作
2)例如:
1 int a=0xff; 2 printf(“%d\n”,a&0x0f)//結果為:0x0f=15 3 /* 4 分析: 5 1111,1111 6 0000,1111 7 —————————— 8 0000,1111(0為假 1為真 &條件下 假&真=加 真&真=真 ) 9 */10 11 a = 0xf0;12 printf("%d\n",a|0x0f);//0xff13 /* 14 1111,000015 0000,111116 */17 18 /*把a的第三個bit設定成0,從 第bit算起*/19 a = 0xcc;//0b1100110020 a = a&0xf7;21 /* 1100,110022 1111,0111 //0b1100,0100 0xc4=19623 */24 25 /*26 把a的第三個bit設定成127 */28 a = 0;29 a = a|0x8;30 /*31 0000,000032 0000,1000 =0x8;33 */ 34 printf("a=%d\n",a);36 a = 0b110;37 printf("%d\n",a<<2);//0b1,1000=2439 a = 0b0110;40 /*41 分析:42 int=4位元組=32bit 43 即 a=0b0110=0b 0000,0000,0000,0000,0000,0000,0000,011044 按位取反後的結果:1111,1111,1111,1111,1111,1111,1111 ,100145 */46 printf("~a=0x%x=%d\n",~a,~a);//按位取反,0xfffffff9=-7
八、各類運算子的優先順序比較
括弧(可以嵌套)>單目(++,- -,!)>算術> 關係>邏輯>賦值
九、資料類型轉換
1 int main() 2 { 5 int a = 0xfff1;
7 char c = a;//隱式轉化
9 printf("%d=0x%x\n",c,c);//截斷,取低8bits11 printf("%f\n",(float)14/5);//強制類型轉換,14轉成float13 /*15 1、與long運算,轉成long17 2、float參與運算,轉成double運算19 3、char 和short運算的時候,轉成 int21 4、有符號->無符號23 */25 float f = 3.14;27 printf("3.14+2000=%f\n",f+2000);29 char ch1 = -128;//0x8031 int i = ch1;//char->int.位擴充:負數補1,正數補033 //0x80(char)-> 0xffff,ff8035 printf("i=%d=0x%x\n",i,i);37 ch1 = 8;//0x839 i = ch1;//char->int.位擴充:負數補1,正數補041 printf("i=%d=0x%x\n",i,i);43 return 0;45 }
十、宏定義
1)宏定義一般都為大寫 格式:#define 別名 (大寫) 運算式/ 參數
2)宏定義的作用是 怎麼代碼可讀性 方便修改
3)例如 通過宏定義求兩數最大值 方法:
1 #define MAX(a,b) a>b?a:b2 #include <stdio.h>3 int main(){4 printf(“請輸入兩個數:\n”);5 scanf(“%d%d”,&a,&b);6 printf(“最大值是:%d”,MAX(a,b));7 return 0;8 }
十一、輸入輸出
1) scanf()/getchar() 用於接收使用者輸入 printf()/putchar() 用於輸出資訊
2)scanf(“格式化字串”,參數地址清單) scanf 輸入參數必須加上“& ”取地址符號 scanf根據斷行符號鍵執行,
根據Tab 空格 來分隔字元,斷行符號表示接收結束,scanf 接收輸入是也可指定長度,如果輸入資訊大於指定長度
則從右向左截取; 例如:int a=12345;scanf(“%3d”,&a) printf(“%d”,a)輸出結果為 123 ;輸入資訊小
於指定寬度則無影響。
3)printf(“格式化字串”,輸出資訊); printf 中可通過格式化字串中置入數字來設定輸出寬度 ;
例如:printf(“%8d”,19) 向右推移8個長度輸出19 ;如果輸出資料大於指定寬度則不起作用
4)解決scanf輸入緩衝區問題 即:當輸入為char(%c)類型 前面有輸入時會直接跳過本次的輸入。
例如:
1 short s; 2 3 printf("輸入一個Short\n"); 4 5 scanf("%hd",&s); 6 7 printf("輸出一個Short值%hd\n",s); 8 9 char c,last;10 11 printf("輸入一個char\n");12 13 scanf("%c",&c);//方法一 輸入緩衝區裡面殘留一個斷行符號符 %c作為有效輸入14 15 //last=getchar();//方法二 getchar()從裡面取走一個字元16 17 scanf("%c",&c);18 19 printf("輸出一個char值%c\n",c);