c++primer 第2章 书上例子 资料截图等

#include <iostream>
using namespace std;

int main(){
for(unsigned u=10;u>=0;--u){

        cout <<u<<endl;
}




        return 0;

}

这种会无限的循环下去 因为先输出在判断掉条件 这会让--u 变成无符号自动转成正的 

改成
#include <iostream>
using namespace std;

int main(){
for(unsigned u=11;u>0;){

        --u;
        cout <<u<<endl;
}




        return 0;

}
~                                                                               
~                                                                               
~                              
这样改为后 不会越过0 就可以了 也可以输出0


 

上面如果把 --u 放在上面 那么就没法在循环里输出0了 个人的建议不要用什么无符号的 作为循环条件 这是都是很隐蔽 还不容易察觉的错误 

指针里 c 和 c++ 区别 

在c里 是只警告 在c++直接编译就不通过了 上面要输出的是p 如果是*p 就是段错误了

再看c++里

指针还是严格些比较好 c++比较那啥 不如c比较友好

#include <iostream>

using namespace std;

int main(){



        int *c;

        cout<<c<<endl;//这里运气好是0 否则不一定是啥 这里也不能输出*c 否则也是段
错误
        return 0;
}

#include <iostream>

using namespace std;

int main(){

        int i =42;

        const int &r1 = i;

        const int &r2 = 42;
        const int &r3 = r1*2;
        const int &r6 = r1;//正确
        //int &r4 = r1*2;//错误
        int &r4 = i;
        int &r5 = r4;

        const int &r7 = r5;
        //int &r7 = r1;错误

        r5=99;
        cout<<"i=" << i<<endl;
        cout<<"r5=" <<r5<<endl;
        cout<<"r1=" <<r1<<endl;
        cout<<"r2=" <<r2<<endl;

/*
i=99
r5=99
r1=99
r2=42

*/
        return 0;
}
~       

 

 

不用常量表达式时 左边是常量表达式 用了常量表达式 右边是常量表达式 

猜你喜欢

转载自blog.csdn.net/ljwy1234/article/details/82712456