C++基础

来源:互联网 发布:淘宝多寄了东西不还 编辑:程序博客网 时间:2024/05/17 01:48

摘录自http://c.chinaitlab.com/special/cclks/Index.html

http://c.chinaitlab.com/special/cshuidishichuan/Index.html

理清一些概念

【1】“&&”、“||”其前后各接一逻辑值,返回两逻辑值之“与”运算逻辑值和“或”运算逻辑值。 
【2】“>> ”“<<” 
<<将左侧的数字转成二进制数,然后将各位向左移动右侧数值的位数,如:4,转为00000100,左移2位,则变成00010000,得16。 
>>与<<一样,只不过是向右移动罢了。如:6,转为00000110,右移1位,变成00000011,得3。如果移2位,则有一位超出,将截断,则6>>2的返回值就是00000001,为1。 
4>>2,等效于4/4的商;32>>3相当于32/8,即相当于32除以2的3次方的商。而4<<2等效于4*4,相当于4乘以2的2次方。因此左移和右移相当于乘法和除法,只不过只能是乘或除相应进制数的次方罢了,但它的运行速度却远远高于乘法和除法,因此说它是一种简单的优化手段。 
【3】 ,其前后各接一数字,简单的返回其右侧的数字。 
【4】三元操作符只有一个,为:,其格式为:<数字1><数字2>:<数字3>.它的返回值为:如果<数字1>是逻辑真,返回<数字2>,否则返回<数字3>.如34:4:2的返回值就是4,因为34非零,为逻辑真,返回4.而0:4:2的返回值就是2,因为0为逻辑假,返回2. 
【5】当希望进行浮点数除法或乘法时,只需让操作数中的某一个为浮点数即可,如:3/4.0的返回值为0.75. 
【6】~其后接数字,取反后接的数字。如~123的返回值就为-124。先将123转成二进制数01111011,然后各位取反得10000100,最后得-124 

【7】变量是一个映射元素。上面提到的表由编译器维护,而表中的每一行都是这个表的一个元素(也称记录)。表有三列:变量名、对应地址和相应类型。

【8】 在C++中,为了支持变量别名,提供了引用变量这个概念。要定义一个引用变量,在定义变量时,在变量名的前面加一个“&”,如下书写:    long a; long &a1 = a, &a2 = a, &a3 = a2;

上面的a1、a2、a3都是a所对应的内存块的别名。这里在定义变量a时就在栈上分配了一块4字节内存,而在定义a1时却没有分配任何内存,直接将变量a所映射的地址作为变量a1的映射地址,进而形成对定义a时所分配的内存的别名。

【9】a += 1;就是a = a + 1

 假设a为1,则a++;将先返回a的值,1,然后再将a的值加一;而++a;先将a的值加一,再返回a的值,2.而a—和—a也是如此,只不过是减一罢了。

当一个数字是地址类型时,作为操作符,其没有要操作的数字,仅仅返回将此数字看作地址而标识的内存中的内容

【10】“()”以及“-”、“*”等这类二元操作符的计算顺序都是从左向右计算,而“!”、负号“-”等一元操作符都是从右向左计算的。赋值操作符都是从右向左计算的,除了后缀“++”和后缀“—”(即上面的a++和a——)。

a = 1; c = 2; c *= a += 4;

    由于“*=”和“+=”的优先级相同,从右向左计算先计算a += 4,得a为5,然后返回a的地址,再计算a的地址得a的值5,计算“*=”以使得c的值为10.

“()”和前缀“++”、“!”、负号“-”等的优先级一样,并且是从右向左计算的,因此( char )-34;将会先计算-34的值,然后再计算( char )的值

【11】在VC中,当表达式中出现后缀“++”或后缀“—”时,只分配一块临时内存,然后所有的后缀“++”或后缀“—”都返回这个临时内存的地址,然后在所有的可以计算的其他操作符的值计算完毕后,再将对应变量的值写入到临时内存中,计算表达式的值,最后将对应变量的值加一或减一。

待续http://c.chinaitlab.com/cc/basic/200905/784572.html

原创粉丝点击