OC語法入門(一) 數據類型和運算符
1.1注釋
注釋和其他語言一樣,允許單行 ,多行注釋,一份規范的代碼裡面需要有一些正式的注釋,如下注釋:
/*
這是多行
注釋
*/
//這是多行注釋
OC語言暫時不支持嵌套注釋。(swift裡面支持這一特性)
1.2標示符和變量
1.2.1分隔符
1.分號
每一個句子以分號結尾,一行可以多個語句,一個語句也可以跨多行,但是變量名不能分開
合法的:
NSString *name = @”你好”; int age = 20;
NSString * hello = [@”好好” stringByAppendingString :
@”我也好好”];
不合法的:
NSString *my
name =@"張三";
2.花括號
{}成對出現,用在函數,if語句,switch語句裡面,ect.
3.方括號
方括號用在數組裡面,字典裡面,還有方法調用裡面。
如:
arr[2]=2;
dict[@"id"] = 2;
NSString *string = @"哈哈";
[stirng length];
4.圓括號
參數傳遞等等。
5.空格
空格。詞與詞之間的分割
6.圓點
變量的調用等
1.1.2標示符規則
Object_C語言標示符必須是字母 下劃線 或是美元符號開頭 後面可以跟字母數字或是下劃線還有美元符號
1.標示符區分大小寫
2.標示符不能為關鍵字,但是可以包含關鍵字
3.標示符不能包含空格
4.標示符只能有美元$符號,不能有其他符號
1.1.3關鍵字
關鍵字在Xcode裡面會呈現特定的顏色。這裡舉例常用的關鍵字
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基本數據類型
1.2.1.整形
1.2.2.NSLog輸出格式
d 以帶符號的十進制輸出
o 八進制無符號輸出
x 十六進制無符號輸出
u 無符號十進制輸出整數
c 以字符輸出,只輸出一個字符
s 輸出c風格的字符串
f 以小數形式輸出,默認輸出6位數字
e 以指數形式輸出浮點數,數字部分默認輸出6位
g 自動選擇%e或是%f輸出,且不會輸出無意義的0
p 以十六進制輸出指針的地址
@ 輸出object-c對象
1.2.3.字符型
1.常用的字符型
\b 退格符
\n 換行符
\r 回車符
\t 制表符
\" 雙引號
\' 單引號
\\ 反斜槓
2.注意:在Xcode裡面進行開發的時候,必須使用轉義字符否則會出錯。
1.2.4浮點型
浮點數包括十進制的,還有科學計算法形式的。如12.34、5E2等等。
注意:用浮點數除以0.0會得到正無窮或是負無窮,用整數除以0.0得到的是整數取值范圍的邊界值,如10/0.0=2147483647
-3/0.0 = -2147483647
1.2.5枚舉
枚舉在Object-c開發中用的比較多。
直接上代碼
enum animals{dog=2,cat=1,pig,cow,hen};
//定義一個枚舉變量
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底層實際是用signed char代表BOOL 而YES和NO的兩個底層值是0和1
系統頭文件如下定義:
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;
//錯誤
BOOL b3 = 256;//這是錯誤的,BOOL是一個只有8位的signed char.越界了
1.2.7類型轉換
類型轉換就如同瓶子裡面的水相互倒來倒去,小的倒入大的裡面基本沒問題的。但是大的倒入小的裡面就需要謹慎了,可能出問題。
int intValue = 33000;
short shortValue = intValue;
//肯定溢出了
看溢出過程(沒學過計算機組成原理的可能看不懂了...)
先學一下{
原碼是直接將數值轉為二進制,但是計算機以補碼的形式保存所有的整數。補碼的計算規則如下
正數的補碼和原碼相同,負數的補碼是其反碼加一,反碼是對原碼按位取反,只是最高位保持不變
}
3000的原碼
00000000000000001000000011101000
截斷為short 只保留 16位
0000000000000000 1000000011101000//最高位為1,表明為負數
減去1得到反碼 1000000011100111
除了符號位以外,其他位取反,得到原碼
最後的補碼:1111111100011000
1.2.8運算符號(加減乘除這裡就忽略)
&按位與
|按位或
~按位非 ,按位取反
^按位異或
<<按位左移
>>按位右移
注意:左移n位就好比是乘以2的n次方,右移n位則是除以2的n次方(不能整除的話則是返回除法結果的最大整數),
按位運算後之前的操作數本身是不會改變的。