各种ios语法
@property (nonatomic, strong) a1--@synthesize a1 的用法:
一般在别的类如a2中使用 类a.a1属性/ self.a1 的时候才用到,a.m中可以不用(但self.a1除外),直接对a1进行赋值操作
true和false、TRUE和FALSE、YES和NO、1和0都是一样的
1、类型不同
bool为布尔型
BOOL为int型
2、长度不同
bool单独占一个字节
BOOL长度视实际环境来定,一般可认为是4个字节
3、跨平台特性
bool是标准C++中的布尔量,占一个字节大小内存,只有false或者true。具有跨平台特性。
BOOL是Microsoft MFC定义的宏: typedef int BOOL;
也就是说BOOL类型实际上是int类型不是bool类型,取值为:TRUE或FALSE、定义语法为:
#define FALSE 0
#define TRUE 1
其实是个int类型,占四个字节大小内存,其值为FALSE或TRUE。不具有跨平台特性。
4、取值不同
bool取值false和true,是0和1的区别。
BOOL取值FALSE和TRUE,是0和非0的区别
例子
bool x=3; // 警告
bool x=1; // 正确
BOOL x=3; // 正确
BOOL x=3.3;// 警告
5、类别不同
bool属于标准C语言、C++数据类型;
BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑,TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。
6、执行效率
BOOL类型要比bool类型处理快一些。因为BOOL类型正好等于一个机器能处理的*大字长。bool处理过程中需要一些转换。
7、其他
这两种不同的布尔类型可以在同一个程序中共存,但在编写Cocoa代码时要使用BOOL。
但是如果没有严格要求的话,布尔类型和Int类型是通用的。非0值的int类型可以转为布尔类型的true,称为隐式转换。0的Int值则可以转为布尔类型的false。
消息调度 @selector参数列表
@selector(…) 语句是Objective-C 中用来指定某个特定方法。关键在于,*不能忘记函数后面的冒号!冒号告诉 Objective-C:“去找一个名为XXX的方法,这个方法有且只有一个参数”。如果忘记写冒号,编译器还是可以通过的,但是程序一运行就会发生崩溃。在 Debugger Console 窗口中,你会看到这样的错误日志:“unrecoginized selector sent to instance…”。
@selector(…) 中的冒号个数一定要与所指定的方法参数个数相同。例如:
– (void) example:(ccTime)delta sender:(id)sender flag:(bool)aBool
那么,对应的@selector语句就应该是:
@selector(example:sender:flag:);
->运算是间接寻址:
比.运算的寻址速度更快,而且你用多指针的话会发现指针用->这种调用方式更简洁,几乎没人会使用p[0].k或*p.k这样的调用方式。
对于以下变量定义,以下表达式正确的是:()
struct node{
char s[10];
int k;
}p[4];
A.p->k=2 B.p[0].s=”abc” C.p[0]->k=2 D.p->s=’a’
答案选A。->是指针特用的,p->k表示p对象中的k变量
B错,只有在声明字符数组的时候才能将一个字符串赋给数组。如:char a[5] = “abc”;而
char a[5]; a=”abc”;这种写法是错的。
C错,p[0]不是指针,不能用->。
D错,不能将一个 const char 类型的字符 ‘a’ 赋给 数组 s。双引号就对了
我这样理解:
p指代的是地址 即p[0]的地址,所以p->k=2 等价于p[0].k=2;->是指针特用的
^异或运算符,位值相同为0,不同为1.
a1 = 0x01; //0000 0001
a2 = 0x00; //0000 0000
a3 = 0x03; //0000 0011
a4 = 0x02; //0000 0010
b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011
完整的式子是这样的x^=y,书上写的x^=y,等价于x=x^y,是怎么算的??
^= 是个异或并赋值的操作符。属于位操作符。二者不同返回1,相同返回 0;
意思是 x与y异或的结果存入 x。
假如 x的二进制是 00000000 00000000 00000000 11111111; 或者更长
y的二进制是 00000000 00000000 11111111 00001111;
则 x^=y;之后 x 的二进制是 00000000 00000000 11111111 11110000;
c语言中的\a怎么用?
#include <stdio.h>
int main()
{
printf(“test:\a”);
return 0;
}
测试的时候,会听到嘟的一声,它不能自动播放音乐的,就一个“嘟”
“>>=”在C语言什么意思?
比如a>>=2,等同于a=a>>2,是指a右移两位,这里的右移指的是a的二进制数形式的右移,相当于a缩小为原来的四分之一。>>是位运算中的右移符,后跟数字,表示右移的位数,右移后原数(二进制形式)高位补零,与此相对的还有左移符<<,用法类似