问题标签 [narrowing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
680 浏览

emacs - Emacs:相同的缓冲区,两个窗口,一个缩小,一个不

我发现窄到区域命令很有用,但是它适用于缓冲区而不是当前窗口。

我想让一个窗口显示缓冲区的缩小版本,而如果缓冲区出现在​​任何其他窗口中,则显示缓冲区会变宽。

这可能吗?

0 投票
2 回答
317 浏览

c++ - G++ 4.5 错误:没有诊断缩小初始化列表

我尝试了以下代码:

其中包括需要缩小的初始化,但代码编译良好,没有任何错误或警告。另一方面,以下代码给出错误:

我发现了一个错误还是什么?

PS:我目前使用的是 GCC 4.5.0

0 投票
3 回答
2076 浏览

g++ - char 和初始化列表

我想通过一些数字字节值初始化列表一个可变参数模板到一个数组中。那可能吗?

我能想到的是

  • 使用八进制表示,'\001' 等,或
  • 转换每一个值。

但两者都不令人满意。

0 投票
2 回答
393 浏览

java - 这是什么意思“缩小原语会截断高位”

这是什么意思“缩小原语会截断高位”

0 投票
2 回答
15029 浏览

java - 在 ejb 中缩小 jndi 引用中的类强制转换异常

我正在尝试编写一个简单的无状态会话 bean,但是我在查找时间给出的狭窄参考存在问题。我有

班级演员表例外

我用

日食IDE

我的豆类

我的主界面

我的组件

我的客户

我的xml文件

我收到的例外

我将非常感谢您的建议。

0 投票
1 回答
2440 浏览

search-engine - 必应搜索 API:按日期缩小

在当前版本中,是否可以在访问其 API 时使用 Bing 的“按日期缩小”功能?

我找不到有关如何缩小结果范围的任何信息,使其仅显示“过去 24 小时”或“过去一周”(等等)的结果。

网站/文档并不清楚我能做什么和不能做什么,以及如何做。你们中有人知道这是否可能吗?

我可以在他们的高级搜索关键字页面上看到您可以在此处使用其他缩小功能(区域、语言、hasfeed 等):http: //onlinehelp.microsoft.com/en-ca/bing/ff808421.aspx

如果您需要更多上下文或信息,请询问。感谢您的耐心和帮助。

0 投票
1 回答
6176 浏览

c++ - What are the consequences of ignoring narrowing conversions in C++0x

Since switching on the C++0x standard in g++, I've started seeing 'narrowing conversion' errors, particularly when converting from an 'int' to a 'short' although I understand the error covers a much broader swath of conversions.

Can anyone shed some light on the rational for introducing this extra level of safety?, What are the possible consequences of disabling this error? (apart from the potential loss of precision).

Thanks.

0 投票
7 回答
3695 浏览

c++ - 使用 -1 初始化结构或数组的无符号 {} 初始化

真的很简短

如何创建一个所有位都设置的无符号常量?

...您可以使用它来初始化带有 { } 的字段,

...没有从 GCC 4.7.2 收到 -Wnarrowing 警告。

不满意的有以下几点:

基本上,编写 {} 初始化的用户不知道 ufield 的类型。他只知道它是无符号类型,但不知道它有多宽。不完全是哪种无符号类型。

* 我想要尽可能简单优雅的语法的另一个原因 *

我不妨提点别的:这里的“用户”实际上并不是在编写 C 或 C++ 程序。他正在编辑一个配置文件。一个程序,一个简单的 Perl 或 Python 脚本,处理配置文件,并生成 C 代码。这个程序不是很复杂,目前通过的文本块看起来像

生成 typedef struct Some_Struct { unsigned a; 无符号 b,无符号 c;} Some_Struct = {-1,2,3}; // 同上

基本上,我希望能够为“设置此无符号值中的所有位”的文字提供一种用户友好的语法。无需知道未签名的有多大。并且没有处理配置文件的程序变得太复杂。

以免潜在的答案提供者抱怨这是一个新的约束,不现实等:
我在模板方面遇到了完全相同的问题。即对于模板类型,我想在其中编写一个“无符号的任何宽度,全为 1”的文字。在模板中,我可能更愿意做一些丑陋的、丑陋的、丑陋的语法,显然可以做到这一点:但我真的希望有一个简单、优雅的语法。

*真正的问题*

问:有什么方法可以创建一个“全为 1”而不触发 GCC 4.7.2 警告的常量?

简短的

我遇到了一个程序,该程序使用文字常量 -1 来初始化结构的字段,例如

尽管早期版本的 GCC 毫无警告地接受了这一点,但相当新的 GCC 4.7.2 版本提供了一个警告:

注意:这只是一个警告。将 -1 转换为无符号的结果在 C/C++ 标准中得到了很好的定义:

我不喜欢警告,所以我想消除这个烦人的警告。我不喜欢使用适用于整个文件的#pragmas,因为这可能会禁用对真正错误的警告。

(顺便说一句,只有在初始化字段时才会收到此警告。在初始化非字段时不会

正在做

使错误沉默。

但有人指出,如果字段的类型不是无符号的,而是 uint64_t,那么 ~0U 提供的结果与 -1 不同:0x00000000FFFFFFFF 而不是 0xFFFFFFFFFFFFFFFF。(即 32 位 1,而不是 64 位 1。)

struct U 和初始化代码可能位于完全不同的位置,我们希望能够在不通知用户的情况下增加字段的大小,即位掩码。目的是获得正在使用的任何无符号类型的“全 1 掩码”。

相似地

使错误沉默。(令我惊讶的是 - 我不知道 -1 可以被认为是无符号的。)

但也是一个有限宽度常数。

细节

这是一个测试程序。(顺便说一句,我要问的是使用有符号文字常量 -1 来初始化无符号成员。其他警告只是测试。你不需要向我解释 64 位数字不需要适合 32 位。)

在早期的编译器中不会出现:

0 投票
2 回答
3136 浏览

c++ - 缩小从 char 到 uint8_t 的转换

使用 C++11 编译以下代码片段(此处为演示):

将触发警告(至少在 GCC 4.7 上),表明转换'\xf2'uint8_t.

为什么是这样?sizeof(char)is always 1,应该与 相同sizeof(uint8_t),不是吗?

请注意,当使用其他字符文字时,例如'\x02',没有警告。

0 投票
1 回答
3567 浏览

c++ - 为什么是“unsigned int ui = {-1};” 缩小转换错误?

§ 8.5.4/7 中的标准解释了缩小转换是什么:

缩小转换是隐式转换

— 从浮点类型到整数类型,或

— 从 long double 到 double 或 float,或从 double 到 float,除非源是常量表达式并且转换后的实际值在可以表示的值范围内(即使不能精确表示),或

— 从整数类型或无作用域枚举类型到浮点类型,除非源是常量表达式并且转换后的实际值将适合目标类型并且在转换回原始类型时将产生原始值,或者

— 从整数类型或无作用域枚举类型到不能表示原始类型的所有值的整数类型,除非源是常量表达式并且转换后的实际值将适合目标类型并生成原始值当转换回原始类型时。

然后它在某些列表初始化上下文中禁止此类转换,并给出示例:

[注意:如上所述,列表初始化中的顶级不允许此类转换。— 尾注] [ 示例:

—结束示例]

示例说明的所有 7 个错误都是由 clang 3.2/3.3 报告的-std=c++11,例如

gcc 4.7.2/4.8.1 没有将它们报告为错误,但在每种情况下都会给出类似的警告,例如

(所以 gcc 似乎知道合规性要求,但默认选择容忍不合规性。)

我不明白的是这个例子如何:

有资格作为一个例子。(对称的si1例子也是如此。)显然,唯一可以作为例子的词是上面给出的缩小转换定义中的第四项也是最后一项。但是如果是这样,那么除了源是常量表达式并且转换后的实际值将适合目标类型并且在转换回原始类型时会产生原始值之外,为什么示例不会通过限定符转义 ?肯定-1有一个整数常量,如果unsigned来回转换,仍然会产生int -1?

我错过了什么?