Windows下的C编程

标签 c

我正在阅读 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),则选择 : 的左侧,否则选择右侧。然后其结果(32)用于乘法。

关于Windows下的C编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253524/

相关文章:

c - 从文件中读取数据到结构中

c++ - c\c++中线程和并发中一本好的编程书籍推荐

c - 从 C 中的 *char[] 变量获取第一个字符

c++ - 如何从带符号的零中去掉减号

c - 如何在不同文件中使用struct C编程

c - 指向函数指针数组的指针

ANSI C 中的颜色控制台?

c - 使用recv()接收消息 block

c - 带字符串名称的 B+Tree 结构

Java 类到 C 结构