C语言基础 - extern,移位与或非
2015-10-17 09:28
302 查看
1,extern在OC中的使用
1),首先在合适的地方定义一个全局的变量,并在合适的地方赋值,赋值可以在声明时候赋值,也可以在定义的类中或者其它任何使用该全局变量的时候赋值和更改全局变量的值;2),测试发现,全局变量必须定义在一个*.m文件中,定义在*.h文件中时候XCode会报错;
3),在需要使用全局变量的地方使用extern关键字声明一个和其它文件中定义的全局变量名字完全相同的变量, 这样就可以在本类中的方法中使用该全局变量了,并不需要导入定义该全局变量的头文件! 在这里也可以改变全局变量的值。
4),测试证明,在定义的地方和使用该全局变量的地方我们使用的是同一个变量。内存地址完全相同。第三次打印地址和前两个不同,是因为第三次两个NSString全局变量被重新赋值了,所以 ~
2,C中的与或非异或移位运算
1),与运算:&两者都为1为1,否则为0
1&1=1, 1&0=0, 0&1=0, 0&0=0
2),或运算:|
两者都为0为0,否则为1
1|1 = 1, 1|0 = 1, 0|1 = 1, 0|0 = 0
3),非运算:~
1取0,0取1
~1 = 0, ~0 = 1
~(10001) = 01110
4),异或运算
两者相等为0,不等为1
1^1=0, 1^0=1, 0^1=1, 0^0=0
5)移位运算
移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。
如果是左移,则规定补入的数全部是0;
如果是右移,还与被移位的数据是否带符号有关。
若是不带符号数,则补入的数全部为0;
若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)。
位移位运算符的优先级如下:
·算术运算符 优先于 位移位运算符 优先于 关系运算符
·位移位运算符是同级别的,结合性是自左向右
<<,左移相当于被移位的数字乘以2的n次方;
>>,无符号左端补零,有符号,补的全部是原符号位
相关文章推荐
- 各种语言输出hello world,如C/java/perl/python/php/C++
- c++中类的申明和定义
- 进击的KFC:第三节:C语言:循环结构 循环的四个要素
- C++片段
- C++手稿:静态和全局变量的作用域
- C++ 最简单的string与wstring互相转换
- STL之set实现
- c++继承与指针
- C++基础编程----4.3表达式
- C++基础编程----4.2运算符
- Visual Studio 2015编译64位MySQL Connector/C++
- 浅析c++中的内联函数(关键字inline)
- 浅析c++中的内联函数(关键字inline)
- 神一般的C语言指针
- 关于C语言中函数调用和参数传递机制的探讨--汇编
- C语言学习—指针
- 使用对象来管理资源
- iOS开发之C语言第二天
- 【C语言】顺序表,数组
- 编译DirextShowSDK时,BaseClasses\ctlutil.h(278) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int