我正在阅读 Charles Petzold 编写的 Programming Windows 中的一个程序。我被困在某一时刻。有一条线:
cxCaps=(tm.tmPitchAndFamily & 1?3:2)*cxChar/2;
其中cxCaps
(静态变量)保存大写字母的平均宽度
我的问题是 & 1 是什么? 3 : 2
?
我知道它是条件运算符,但 1 2 3 是什么。
谁能解释整个 cxCaps
行?
最佳答案
这是一系列操作。让我们把它放在括号中:
((tm.tmPitchAndFamily & 1) ? 3 : 2) * (cxChar / 2);
所以首先执行 tm.tmPitchAndFamily & 1
操作,检查 tm.tmPitchAndFamily
是否为奇数(如果设置了最低有效位,则为奇数) .此操作的结果是 ternary expression ?:
的一部分.如果三元表达式的左侧为非零(即 true),则选择 :
的左侧,否则选择右侧。然后其结果(3
或 2
)用于乘法。
关于Windows下的C编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253524/