- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Bjarne S 的 C++ 编程语言。
在第 77 页,第 4.8 节中,我发现了这一点:
"枚举器可以用常量表达式初始化(§C.5) 的整数类型 (§4.1.1)。这枚举的范围包含向上舍入到最接近的所有枚举的枚举器值较大的二进制幂减 1 。如果最小的枚举数是非负的,则范围下降到 0如果最小的枚举数为负,则为最接近的较小的负二元幂。这定义了最小位域能够保存枚举器值。例如:
enum e1 { d a r k , l i g h t }; // range 0:1
enum e2 { a = 3 , b = 9 }; // range 0:15
enum e3 { m i n = 10 , m a x = 1 0 0 0 0 0 0 }; // range -1048576:1048575
我不明白为什么 enum3 有那个范围
(1048576:1048575)? - (- 2^20 : 2^20 - 1)
最佳答案
这应该是您的版本中的错字。在同一本书的我的版本(The C++ programming langage - special edition,第 12 次打印,2005 年 5 月)中,我阅读了
enum e3 { min = -10, max = 1000000 };
与正文相符。
补充说明:
Stroustrup 解释说,该范围基于能够保存枚举器值的最小位域。使用 20 位,您可以表示 2^20=1048576 个不同的值。当您从 0 而不是 1 开始计数时,您可以达到最大 2^20-1。这解释了最高范围。
现在他解释说,如果最小的枚举数是非负数,范围会下降到 0。这意味着如果 min = 10,则范围将从 0 到 1048575。
他还解释说,如果最小枚举数为负数,则最小范围应四舍五入到最接近的较小的负二元幂,这适用于min = -10。仅这句话就会产生歧义:您可能认为低于 -10 的最小二乘方为 -16。但这句话必须与范围由能够保存值的最小位域 定义这一事实联系起来。因此,您需要 20 位 + 符号位,并且根据约定,您可以用它来表示从 -2^20 到 +2^20-1 的值。
关于C++ - 枚举范围? Bjarne Stroustrup 书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24826853/
练习 13,来自 Stroustrup 的编程原则和使用 c++ 的实践的第 12 章。 A superellipse is a two-dimensional shape defined by th
在《编程:使用 C++ 的原理与实践》的第 5.10.1 章中,有一个“试试这个”练习,用于调试某个区域的错误输入。前置条件是长度和宽度的输入是否为 0 或负数,而后置条件是检查面积是否为 0 或负数
这些是 Stroustrup 在他最新的 C++ 书中给出的指导方针在函数中传递参数: [1] Use pass-by-value for small objects. [2] Use pass-by
在 Stroustrup 的 C++ 编程语言书(第 3 版)中,在数值章节中,他展示了以下代码片段: void f(valarray& d) { slice_array& v_even =
Stroustrup C++ 第 4 版第 197 页有以下示例,这些示例导致打印的字符流递增,直到 null 而不是 "abc"。问题:如何评估 ++*p? ++ 和 * 是相同的优先级和从右到左的
以下示例来自 Stroustrup C++ 4th Ed。第 519 页。这是我从 K&R C 和更早的 Stroustrup 书中的理解,即原始类型的局部自动变量 未定义或未知被初始化 .原始类型的
我正在使用 Stroustrup C++ 第 4 版第 1182 页的这个随机数示例。编译器在 auto 行报告错误。 ,说明 auto 不能与类的非静态成员一起使用。我对这种绑定(bind)的结果类
“没有匹配的成员函数push_back” 在 Bjarne 的原始版本中,C 的 vector 是这样写的 vector*> res; 但是这个 Value_type 模板不能正常工作所以我只是用 C
请引用B.Stroustrup的《TCPL》第4版41.2.2 Instruction Reordering部分,我抄录如下: To gain performance, compilers, opti
我在 YouTube 上看到了这个视频:https://www.youtube.com/watch?v=YQs6IC-vgmo其中 Bjarne 说最好使用 vector ,而不是链表。我无法掌握全部
在 C++ 之旅的第 83 页,Stroustrup 提供了以下正则表达式: R"((\ew+))" 书中没有任何地方定义\e,我在互联网上也找不到任何相关信息。\e 在正则表达式中代表什么? 最佳答
目前我正在阅读 Stroustrup Programming: Principles and Practice C++。我遇到了这个例子: typedef void (*Pfct0)(struct S
以下幻灯片来自 Bjarne Stroustrups 的演讲“C++ 的本质”: 我是否通过以下简单示例(值、原始指针、资源成员/子对象的智能指针)理解了他的技术?: 1. class foo{
我正在阅读 Bjarne Stroustrup “The C++ programming language” 一书,其中提到在变量定义中使用 auto 的原因之一是: The definition i
我决定自己学习 C++,我已经有了一些 Java 经验。 在 Bjarne Stroustrup 的书中他说: Prompt the user to enter the age of the reci
我正在查看 Straustrup 的 hash_map 实现。这将给出他如何实现的直觉 template, class EQ = equal_to, class A = allocator > cla
我正在使用 Stroustrup 的天鹅书。我在从 a 获取输出时遇到了问题 vector 。我遵循了 sec 的文本示例。 4.6.3 第 121 页。设法编译了源代码并能够执行它。后输入由空格分隔
在 Stroustrup 的书 Programming with C++ page 102 中,他使用 cin 读入 double 后跟 char,用于将厘米转换为英寸. 他使用的代码: cin >>
我正在阅读 Bjarne S 的 C++ 编程语言。 在第 77 页,第 4.8 节中,我发现了这一点: "枚举器可以用常量表达式初始化(§C.5) 的整数类型 (§4.1.1)。这枚举的范围包含向上
Stroustrup 提供了一个 Can_copy template .它是如何工作的? template struct Can_copy { static void constraints(
我是一名优秀的程序员,十分优秀!