#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;
}
~
不用常量表达式时 左边是常量表达式 用了常量表达式 右边是常量表达式