/*参考《程序员面试笔试宝典 第二版》机械工业出版社 P54*/
(*p)++ 与 *p++ 之间的区别
第一个是 先取出值,再把值++,p没变,还是指向原来的空间。
第二个是 先取出值,再把p++;
<pre name="code" class="cpp"><span style="font-size:14px;"> int a=2;
int *p=&a;
cout<<(*p)++<<endl;
cout<<*p<<endl;
cout<<a<<endl;</span>
结果是:
233
<span style="font-size:14px;"> int a=2;
int *p=&a;
cout<<*p++<<endl;
cout<<*p<<endl;
cout<<a<<endl;</span>
结果是:
2
-858993460
2
================(2)=================================================
若a是变量,则 (a++)+=a;这句是非法的。
因为 a++不能当做左值(取a的地址,把它的值装入寄存器,然后在内存中对a进行++),
而 ++a可以(表示取a的地址,对它的内容进行+1操作,然后把值放入寄存器)。
i++=5 非法 i++的运算结果并不是i这个变量的引用,而是一个临时变量,编译器不允许对一个临时变量重新赋值,上面的表达式会引起编译错误。
++i=5;合法
==================(3)===============================================
如何进行float、bool、int、指针变量与“零值”的比较
(1)int
推荐写法:
if(n==0)
if(n!=0)
(2)float
const float P=0.00001;
if(x>=-P&&X<=P)
错误的写法:
if(x==0.0)或者if(x!=0.0)
(3)bool类型
if(flag)
if(!flag)
(4)指针类型
if(P==NULL)
if(P!=NULL)
==================(4)===============================================