標籤:io os 使用 ar strong 資料 sp on 代碼
一、常量
(1)整型常量:1
(2)浮點常量(即帶有小數的):預設是double型,如5.3,float型的後面會有個f,如5.3f。
(3)字元常量:單引號的,‘a‘或‘1‘,裡面只能是一個位元組的字元,漢字不行,漢字佔3個位元組。
(4)字串常量:雙引號的,“hello”等。
二、變數
用int、double、float、char等定義變數。定義一個變數後,第一次賦值也稱之為初始化。必須在初始化後再使用變數。
(1)變數的範圍是從定義起至遇到return}止,其實就是在一個函數內有效,出了這個函數就無效,除非是全域變數。
(2)需要先定義變數,再使用,因為代碼是從上至下執行的。
(3)格式化輸出,%i,%d,%c,%f,%04i,%.2f等預留位置。
%i和%d無差別,%i是老式寫法,%d是新式寫法而已。
%.2f小數點後面的數字表示保留幾位小數。
%4i表示數字位元寬度。如數字是1,那麼結果是 1,前面保留三位。
%04i相比上面,是用0填補空位,即數字是1,那麼結果是0001。這個在iOS開發中開發幀動畫可能有用,系列圖片編號是001,png、002.png、003.png等。
%-4i是靠右對齊,數字是1,輸出結果是1 ,後面保留三位。
%4i,如果數字是12345多於4位,那麼不會受到約束,全部輸出12345。
三、scanf注意點
int main(int argc, const char * argv[]) { //利用scanf和printf,接受使用者輸入的兩個數字,相加後輸出和結果 int number1; int number2; printf("plz input your first number:"); //&表示取地址,scanf是要求使用者輸入 scanf("%d",&number1); printf("then second number:"); scanf("%d",&number2); int sum=number1+number2; printf("The sum is %d\n",sum); //scanf也可以一次接受多個輸入,但是使用者輸入格式要和定義的一模一樣 //如下面一句,使用者在輸入時,兩個數字之間也必須用逗號隔開 //我們可以用任意符號作為分隔字元,不一定是逗號 //scanf("%d,%d",&number1,&number2); //如下,如果輸入1234,那麼程式只會截取前三位,即123,最終輸出nnumber1也是123。 //scanf("%3d",&number1); //在scanf中,以斷行符號作為結束輸入訊號,所以不能用\n,如scanf("%d\n",&number1); //我們輸入的東西放在輸入緩衝區中,當按下斷行符號鍵後,輸入緩衝區中又個斷行符號鍵/n,此時scanf會從這個輸入緩衝區中取值,如果格式不匹配,則結束取值。 //而結束取值後,輸入緩衝區仍有一個資料和/n,所以遇到下一個scanf時,程式不會要求我們輸入東西,而是直接到輸入緩衝區取值進行賦值。 //如下程式,我們輸入a,第一個不匹配格式,number3裡就是個隨機數,而因為輸入緩衝區中又a和\n,所以滅幼要求為myC輸入一個值,而是直接到輸入緩衝區中取值賦值給myC,如果還是不匹配,估計會一直這樣持續下去。 int number3; scanf("%d",&number3); printf("%d\n",number3); char myC; scanf("%c",&myC); printf("%c\n",myC); return 0;}
四、運算子號
(1)除了+、-、*、/之外,還有%表示模運算取餘。模運算取餘一般用在得到一個範圍內隨機數的例子中,比如需要0~15之間的範圍,就用%16。
int main(int argc, const char * argv[]) { //自動類型轉換,有警告 int number3=10.8; //強制類型轉換 int number4=(int)10.8; //型別提升:先把8轉換成double才能和10.8相加,否則不可、這個轉換是電腦自動完成的。 //規律:把小類型的資料轉換成大類型的資料類型 double number5=10.8+8; //參與預算的資料是什麼類型,出來的值就是什麼類型,如下面結果是0,但並不是前面int的作用,替換成double仍然是0 int number6=1/2; return 0;}
(2)賦值運算子就是:=,或者+=、-=等等。
(3)自增自減有兩種形式a++,++a,前者是先運算再自增、後者相反。所以b=a++和b=++a,前者的b=a,後者的b=a+1。
複雜的時a=10,b=(a++)+(a++),結果b是21,a是12。前面一個a++,先運算後自增,所以值是10,自增結果是11,到後面的a++時,a已經是11了,先運算的話就是用11和之前的10相加,等於21。然後自己增加一個變成12。
(4)sizeof()是計算資料以及資料類型佔用記憶體大小的運算子。如int num1=sizeof(10)或者int num1=sizeof 10,或者先定義float a=10.5,然後int num1=sizeof(a)或者int num1=sizeof a。但是在計算資料類型時括弧不能省略,即int num1=sizeof(float)。
(5)逗號運算子:是輸出最後一個運算結果,如int b=(a=5,a++,a*6);結果是36。
(6)關係運算子:返回結果是真為1,假為0,且>、>=、<、<=的優先順序高於==、!=,如果都是平級的時從左向右運算。關係運算子優先順序小於+1*/這種算數運算子。
(7)邏輯與算符:與或非分別是&&、||、!。核心需要注意的時&&前面如果假,則後面的就不會運算了。||前面為真,則後面的就不會運算了。因為已經知道結果了,所以就省略運算了。
【Xcode學C-2】常量、變數、scanf、printf以及各種運算子介紹