这个语句什么意思?"con ? DEV_CON : 0"

159zhou   2010-3-28 17:02 楼主
在用ARM Cortex-M3 的内核时遇到这个问题:
如果有:
#define DEV_CON             0x01
#define DAT_WR_BYTE(x)     (0x00000100 | ((x) << 16))

执行以下的语句:
DAT_WR_BYTE(con ? DEV_CON : 0)

看了很久都没看懂"con ? DEV_CON : 0"这个是什么意思,为什么会有个问号?
请大虾们指点迷津!谢啦!

回复评论 (6)

(con ? DEV_CON : 0)=:
if(con) return DEV_CON
else    return 0;
点赞  2010-3-28 17:04
呃~~你唤醒了我的记忆!忘记以前学过了!感谢!如果写成这样我就认得:z?x:y
谭浩强的书是这么写的,哈
点赞  2010-3-28 17:10
那么定义成 typedef unsigned int       BOOL;
BOOL是什么意思,布尔的意思?那为什么变量要定义成这样,有什么用?
点赞  2010-3-28 17:11
typedef unsigned int BOOL;

BOOL是布尔变量,不是0就是1

不过直接用类型定义,那就是换个马甲
点赞  2010-3-28 19:03
这样定义的BOOL还是unsigned int 的,与语言内建的bool不一样。
点赞  2010-3-28 19:26
第一个我没记错名字的话叫三目运算符
第2个typedef unsigned int BOOL; 是把unsigned int这个类型搞个别的名字出来, 就是BOOL,其实是为了方便,是一样的。
点赞  2010-3-29 09:38
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复