首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Windows中的BOOL是int类型的?

为什么Windows中的BOOL是int类型的?
EN

Stack Overflow用户
提问于 2017-07-01 17:56:28
回答 2查看 926关注 0票数 2

为什么不将BOOL定义为enum,如

代码语言:javascript
运行
复制
enum BOOL {FALSE, TRUE};

是否有任何理由必须将BOOL指定为显式int (或任何其他整数类型)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-01 18:24:27

来自雷蒙德·陈( Raymond )的博客文章:

布尔与布尔与布尔之比

还有更多的方式说同样的话。为什么这么多? 因为每一个都是由不同的人在不同的时间发明的,以解决不同的问题。 BOOL 是最古老的。它的定义很简单 typedef int BOOL; C编程语言使用"int“作为其布尔类型,当C是系统编程的酷语言时,Windows1.0被写回。

到目前为止,绝大多数的Win32 API都是为C语言设计的,因此它可以兼容多种与C语言兼容的编程语言。

Enum在编译器之间存在可移植性问题,这与字节大小和位表示形式的差异有关。此外,直到1989年ANSI (又名C98)才将enum添加到C中,这是在Windows发布了三个版本(1985年为1.0,1987年为2.0,1988年为2.1 )之后,枚举实际上等同于整数。

票数 7
EN

Stack Overflow用户

发布于 2017-07-01 18:01:09

原因是C最初没有bool类型。根据C语言规范,任何非零积分值都计算为true,0计算为false。BOOL类型胡枝子是Microsoft后来为Windows编程而添加的。枚举仍将在封面下评估为0和1(或其他一些东西取决于机器)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44863907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档