C/C++中问号冒号表达式的陷阱
2015-09-13 23:18
302 查看
C/C++中问号冒号表达式的陷阱
搬运自我的百度空间在做一个工程,遇到奇怪的bug,问题类似如下
int a=1,b=2,c=3,d;
d=a*b + c ? 1: 0;
问d结果是多少?
设计时,我想结果应该为3 (1*2+1)
实际d结果为1
因为问号冒号表达式的优先级比较低(三元运算符优先级小于二元运算符,比如加号+)
所以实际运行时d和以下表达式等价:
d= (a*b + c) ? 1: 0;
而不是我们预想中的a*b + (c ? 1
相关文章推荐
- 【LeetCode从零单刷】Gray Code
- OJ提交题目 G++与C++的区别!!
- c++设计模式---- Bridge(桥接模式)
- c++11——改进容器性能
- 【LeetCode从零单刷】Lowest Common Ancestor of a Binary Search Tree
- 实现跨平台的C++线程库
- 深入理解C语言类型转换
- C++模板
- c++11——move/forward
- 【LeetCode从零单刷】Convert Sorted Array to Binary Search Tree
- c++字符串操作函数
- C++基础知识总结--指针
- C++ STL中的关于堆的函数
- 实现C++实用的时间库
- 【LeetCode从零单刷】Single Number III
- C语言实现单链表-01版
- Effective C++ —— 实现(五)
- C++模板的一些巧妙功能
- C++模板的一些巧妙功能
- C语言初步接触