C++ bugFree!

C++

* 要写分号!

 

* min/max函数只能比较两个数。 min(a,b,c) 会出错,要用 min(a,min(b,c)) 

 

* min/max的输入不能一个是sizetype, 一个是int

 

* void move(stack<int> &s1, stack<int> &s2)   不加引用时是值传递

 

* numeric_limits<int>::max()   要记得加<int>类型参数

 

* cout<<5&3<<endl; 是不对的! 会有优先级问题  "<<"被认为是左移,优先级比与(&)高

 

* & 比 == 的优先级还要低! (5&4)==0 要加括号!

 

* 左移右移不会改变变量本身的值! 

 

* for(int i=0; preorder[i]!=val; i++)  如果之后要用i的值,要把i定义到for循环的外面去!!!

 

* for(int i=0; preorder[i]!=val; i++) 后面要记得打分号,否则后面的语句就被放到循环里去了 >..< 

 

* binary search时,mid = (left+right)/2 , 但是有时left+right会溢出, 所以

  mid = (left/2+right/2) + (left%2+right%2)/2;

或者 

  mid = lower + (upper - lower) / 2;

* string a=“123”;
max(3, (int)a.length())  //  must transfer a.length() into int  
 
* (1<<rh)-1; 减号比移位符号优先级高
 
* 定义对象指针数组时,要用memset做初始化,见http://www.cnblogs.com/XingyingLiu/p/5224556.html
 
* priority_queue 的top是read only的,不能直接修改
 
* 类定义成员的时候不能初始化, 要在构造函数中初始化
 
* 如果s是空的vector, 那s.size()-1 是极大值。 因为s.size() 是unsigned 类型.
 
* abs(INT_MIN) 会溢出, long 类型要用labs算绝对值
 
* 不能直接把 char 拼接成 string, 也不能用 to_string 把 char 变成 string, 要用 stringstream. http://www.cplusplus.com/forum/beginner/4967/
非空string + char 会变成string, 但是 “” + char 会变成奇怪的东西。
 
posted @ 2016-01-09 03:03  飞飞喵  阅读(152)  评论(1编辑  收藏  举报