OC語(yǔ)法入門(mén)(一) 數(shù)據(jù)類型和運(yùn)算符
1.1凝視
凝視和其它語(yǔ)言一樣,同意單行 ,多行凝視,一份規(guī)范的代碼里面須要有一些正式的凝視,例如以下凝視:
/*
這是多行
凝視
*/
//這是多行凝視
OC語(yǔ)言臨時(shí)不支持嵌套凝視。(swift里面支持這一特性)
1.2標(biāo)示符和變量
1.2.1分隔符
?1.分號(hào)
每個(gè)句子以分號(hào)結(jié)尾,一行能夠多個(gè)語(yǔ)句,一個(gè)語(yǔ)句也能夠跨多行。可是變量名不能分開(kāi)
?? 合法的:
?NSString *name? = @”你好”; int age? = 20;
?NSString * hello = [@”好好”? stringByAppendingString :
?@”我也好好”];
? 不合法的:
? NSString *my
???????????? name =@"張三";
?
?2.花括號(hào)
?? {}成對(duì)出現(xiàn)。用在函數(shù),if語(yǔ)句,switch語(yǔ)句里面,ect.
?3.方括號(hào)
?方括號(hào)用在數(shù)組里面,字典里面,還有方法調(diào)用里面。
?如:
?arr[2]=2;
?dict[@"id"] = 2;
?NSString *string = @"哈哈";
?[stirng length];
?
?4.圓括號(hào)
?參數(shù)傳遞等等。
?5.空格
?空格。詞與詞之間的切割
?6.圓點(diǎn)
?變量的調(diào)用等
?
?1.1.2標(biāo)示符規(guī)則
? Object_C語(yǔ)言標(biāo)示符必須是字母 下劃線 或是美元符號(hào)開(kāi)頭 后面能夠跟字母數(shù)字或是下劃線還有美元符號(hào)
? 1.標(biāo)示符區(qū)分大寫(xiě)和小寫(xiě)
? 2.標(biāo)示符不能為keyword,可是能夠包括keyword
? 3.標(biāo)示符不能包括空格
? 4.標(biāo)示符僅僅能有美元$符號(hào),不能有其它符號(hào)
?
?1.1.3keyword
?keyword在Xcode里面會(huì)呈現(xiàn)特定的顏色。這里舉例經(jīng)常使用的keyword
?auto break case char const continue default do double else enum
?extern float for goto if int long register return short signed sizeof
?static struct switch typedef union unsigned void volatile while
?
?1.2基本數(shù)據(jù)類型
?? 1.2.1.整形
?? 1.2.2.NSLog輸出格式
?? d 以帶符號(hào)的十進(jìn)制輸出
?? o 八進(jìn)制無(wú)符號(hào)輸出
?? x 十六進(jìn)制無(wú)符號(hào)輸出
?? u 無(wú)符號(hào)十進(jìn)制輸出整數(shù)
?? c 以字符輸出,僅僅輸出一個(gè)字符
?? s 輸出c風(fēng)格的字符串
?? f 以小數(shù)形式輸出,默認(rèn)輸出6位數(shù)字
?? e 以指數(shù)形式輸出浮點(diǎn)數(shù),數(shù)字部分默認(rèn)輸出6位
?? g 自己主動(dòng)選擇%e或是%f輸出,且不會(huì)輸出無(wú)意義的0
?? p 以十六進(jìn)制輸出指針的地址
?? @ 輸出object-c對(duì)象
??
?? 1.2.3.字符型
?? 1.經(jīng)常使用的字符型
?? 退格符
??
換行符
??
回車(chē)符
?? 制表符
?? " 雙引號(hào)
?? ' 單引號(hào)
?? \ 反斜杠
?? 2.注意:在Xcode里面進(jìn)行開(kāi)發(fā)的時(shí)候,必須使用轉(zhuǎn)義字符否則會(huì)出錯(cuò)。
??
?? 1.2.4浮點(diǎn)型
?? 浮點(diǎn)數(shù)包含十進(jìn)制的,還有科學(xué)計(jì)算法形式的。
如12.34、5E2等等。
?? 注意:用浮點(diǎn)數(shù)除以0.0會(huì)得到正無(wú)窮或是負(fù)無(wú)窮。用整數(shù)除以0.0得到的是整數(shù)取值范圍的邊界值。如10/0.0=2147483647
?? -3/0.0 = -2147483647
?? 1.2.5枚舉
?? 枚舉在Object-c開(kāi)發(fā)中用的比較多。
?? 直接上代碼
?? enum animals{dog=2,cat=1,pig,cow,hen};
?? //定義一個(gè)枚舉變量
?? enum animals myCat,myDog;
?? myCat? = cat;
?? myDog = dog;
?? NSLog(@"%d和%d",myCat,dog)//輸出:1和2
??
?? //定義匿名枚舉變量
?? enum {male ,famale}me,you;
?? me = male;
?? you = 1;
??
?? 1.2.6布爾
?? Object-C底層實(shí)際是用signed char代表BOOL 而YES和NO的兩個(gè)底層值是0和1
?? 系統(tǒng)頭文件例如以下定義:
?? typedef signed char BOOL;
?? #if !defined(YES)
????? #define YES (BOOL)1;
?? #endif
?? #if !defined(YES)
????? #define NO (BOOL)0;
?? #endif
?? //能夠給BOOl型賦值
?? BOOL b1 = 1;
?? BOOL b2 = 100;
??
?? //錯(cuò)誤
?? BOOL b3 = 256;//這是錯(cuò)誤的,BOOL是一個(gè)僅僅有8位的signed char.越界了
??
?? 1.2.7類型轉(zhuǎn)換
?? 類型轉(zhuǎn)換就如同瓶子里面的水相互倒來(lái)倒去。小的倒入大的里面基本沒(méi)問(wèn)題的。
可是大的倒入小的里面就須要慎重了。可能出問(wèn)題。
?? int intValue = 33000;
?? short shortValue = intValue;
?? //肯定溢出了
?? 看溢出過(guò)程(沒(méi)學(xué)過(guò)計(jì)算機(jī)組成原理的可能看不懂了...)
?? 先學(xué)一下{
??? 原碼是直接將數(shù)值轉(zhuǎn)為二進(jìn)制,可是計(jì)算機(jī)以補(bǔ)碼的形式保存全部的整數(shù)。補(bǔ)碼的計(jì)算規(guī)則例如以下
??? 正數(shù)的補(bǔ)碼和原碼同樣。負(fù)數(shù)的補(bǔ)碼是其反碼加一,反碼是對(duì)原碼按位取反。僅僅是最高位保持不變
???
?? }
?? 3000的原碼
?? 00000000000000001000000011101000
?? 截?cái)酁閟hort 僅僅保留 16位
?? 0000000000000000?? 1000000011101000//最高位為1,表明為負(fù)數(shù)
??? 減去1得到反碼????? 1000000011100111
??? 除了符號(hào)位以外。其它位取反。得到原碼
??? 最后的補(bǔ)碼:1111111100011000
???
??? 1.2.8運(yùn)算符號(hào)(加減乘除這里就忽略)
??? &按位與
??? |按位或
??? ~按位非 ,按位取反
??? ^按位異或
??? <<按位左移
??? >>按位右移
??? 注意:左移n位就好比是乘以2的n次方,右移n位則是除以2的n次方(不能整除的話則是返回除法結(jié)果的最大整數(shù)),
??? 按位運(yùn)算后之前的操作數(shù)本身是不會(huì)改變的。
???
???
?
???
??
??
??
?
?
?
本文摘自 :https://blog.51cto.com/u