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

xiaoxiao2021-03-01  11

 

#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; } ~

 

 

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

 

转载请注明原文地址: https://www.6miu.com/read-3350304.html

最新回复(0)