[c++读书笔记]第六章 |
C++读书笔记
1.仔细想想f函数各语句的含义:
void f(int x,int y) //假设x=3;y=4;
{
int j=x=y;//j=4,x=4,y=4
int *p=&++x;//正确,先x自加即时x+=1, 然后返回x的指针赋值给p;
int *k=&x++;//错误,x++ 不是一个左值(它不是存储在x里的值)通俗地说,x ++ 返回的是数值而不是一个变量,所以不能把指针赋给k;
int *q=&(x=x++);//正确,先计算x++ 在此例中得到6,然后赋值给予 x,最后把x 的指针赋给q
int *pp=&(x>y?x:y);//正确,根据地x与y的大小,返回指针给pp.
cout<<"*p="<<*p<<" &p="<<p<<"x="<<x<<" x="<<&x<<"*y="<<&y<<" y="<<y<<'\n';
cout<<"*q="<<*q<<" &q="<<q<<'\n';
}
注意:当一个变量申明说指针变量后,如上例中的p,,p表示它指向的地址,在上例中是x的指针,*p表示它指向的地址的内容,&p表示指针变量自身的地址。请不要混淆。
2.在c++中下溢、上溢和除零都不会抛出标准异常。
void f()
{
int i=1;
while(0<i)i++;//当i超出最大的整数,会发生什么无定义,但一般是那个值被“卷回来”变成一个负数(我测试的结果是-2147483648)。类似的,除零的结果也是无定义的。
cout<<" i has become negative!"<<i<<"\n";
}
|
阅读全文(2009) | 回复(0) | 编辑 | 精华 |
|
« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
公告 |
有一种鸟儿是永远关不住的 因为它的每片羽翼上都沾满了自由的光辉
方向:计算机视觉 人工智能 演化算法
| |
Blog信息 |
blog名称:阳光海岸心 日志总数:166 评论数量:237 留言数量:-4 访问次数:1450900 建立时间:2006年6月2日 | |

|