OC语法入门(一) 数据类型和运算符
1.1注释
注释和其他语言一样,允许单行 ,多行注释,一份规范的代码里面需要有一些正式的注释,如下注释:
/*
这是多行
注释
*/
//这是多行注释
OC语言暂时不支持嵌套注释。(swift里面支持这一特性)
1.2标示符和变量
1.2.1分隔符
1.分号
每一个句子以分号结尾,一行可以多个语句,一个语句也可以跨多行,但是变量名不能分开
合法的:
NSString *name = @”你好”; int age = 20;
NSString * hello = [@”好好” stringByAppendingString :
@”我也好好”];
不合法的:
NSString *my
name [email protected]"张三";
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次方(不能整除的话则是返回除法结果的最大整数),
按位运算后之前的操作数本身是不会改变的。