关于C++中运算符的优先级的一点感想
2013-04-08 23:56
239 查看
今天帮同事调试一个C++的问题,代码如下:
错误很明显,移位运算符的优先级比加号的优先级要低,加号比移位要先计算。可是在当时愣是没有发现这样的错误,还是在后来gdb调试时打印出num1、num2和key的值后才发现运算错误,明白是运算符的优先级导致的。
像这样的错误我记得以前写代码也遇见过,可从小养成的思维定式却让我习惯于从左向右、从上向下的开东西,以至于有些时候很明显的错误却很难发现。当你调试代码时实在想不出哪里出了问题,你最好让开,让你的朋友或同事帮忙你看看,通常都能顺利解决。而且很多时候都是一些很简单很低级的错误,只是我们当时深陷其中,看不到问题罢了。
u64 key = ((u32)num1) << 32 + (u32)num2;
错误很明显,移位运算符的优先级比加号的优先级要低,加号比移位要先计算。可是在当时愣是没有发现这样的错误,还是在后来gdb调试时打印出num1、num2和key的值后才发现运算错误,明白是运算符的优先级导致的。
像这样的错误我记得以前写代码也遇见过,可从小养成的思维定式却让我习惯于从左向右、从上向下的开东西,以至于有些时候很明显的错误却很难发现。当你调试代码时实在想不出哪里出了问题,你最好让开,让你的朋友或同事帮忙你看看,通常都能顺利解决。而且很多时候都是一些很简单很低级的错误,只是我们当时深陷其中,看不到问题罢了。
相关文章推荐
- C++关于运算符的优先级
- 看完首页文章谈谈关于C++学习的一点感想
- c++ 中关于运算符优先级的问题 以及与或问题详解
- (转)关于求职的一点感想吧
- 关于C++内存的一点解释。
- 关于C++中 is a概念的一点疑问,希望高手解答。
- C++ 运算符优先级列表
- C++ 运算符优先级列表
- C++_运算符的优先级
- 关于技术学习的一点感想
- 关于VS2010 Beta2的一点体会和感想
- c转C++的一点感想
- C++:关于C++的四个类型转换运算符
- 关于实习的一点感想
- 关于C/C++结构体的一点知识
- C++ 运算符优先级列表
- 浅谈C/C++中运算符的优先级、运算符的结合性以及操作数的求值顺序
- 关于指针和自增运算符的优先级
- C++ 运算符优先级列表
- c++ 关于decltype和auto的一点小总结