C/C++中问号冒号表达式的陷阱
2015-06-14 00:50
489 查看
搬运自我的百度空间
在做一个工程,遇到奇怪的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 : 0)
2014-12-11
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 : 0)
2014-12-11
相关文章推荐
- poj1062昂贵的聘礼有等级限制的最短路径
- 《C++Primer》读书笔记--异常处理
- 【C++ Primer Plus 9.2】 存储持续性、作用域和链接性
- c++学习
- C语言使用正则表达式
- C++为什么要设计友元函数和友元类
- C++为什么要设计友元函数和友元类
- 学生cpp成绩统计 【基类派生类练习】
- 大话设计模式C++版——抽象工厂模式
- 大话设计模式C++版——抽象工厂模式
- String的c语言实现
- 【好程序员笔记分享】—— C语言指针的理解
- 开始学习C++心得实例(1)
- c/c++回车不换行
- Cpp Primer<<学习IO标准库--文件模式、字符串流_7
- 吉哥系列故事――临时工计划
- C++ const关键字总结
- 小程序之计算器 【C++ STL栈实现】 + 【C 数组模拟栈实现】 【适用VC, DEV, codeblack】
- 如何在游戏中实现穿墙功能
- c++ map