- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试在启用 gcc
和 C++11
的情况下编译以下代码:
unsigned int id = 100;
unsigned char array[] = { id % 3, id % 5 };
我收到这些警告:
narrowing conversion of ‘(id % 3u)’ from ‘unsigned int’ to ‘unsigned char’ inside { } [-Wnarrowing]
有没有办法帮助编译器发现 id % 3 的结果适合 unsigned char?
最佳答案
在这种特定情况下,使 id
const 或 constexpr将解决问题:
constexpr unsigned int id = 100;
因为当您有一个转换后的结果适合目标类型的常量表达式时,这是一个异常(exception)。
在更一般的情况下,您还可以使用 static_cast将结果转换为无符号字符:
{ static_cast<unsigned char>( id % 3), static_cast<unsigned char>( id % 5) }
^^^^^^^^^^^ ^^^^^^^^^^^
我们可以在 draft C++ standard 中找到常量表达式 和缩小转换的异常8.5.4
List-initialization 部分说:
A narrowing conversion is an implicit conversion
并包括以下项目符号(强调我的):
- from an integer type or unscoped enumeration type to an integer type that cannot represent all the values of the original type, except where the source is a constant expression whose value after integral promotions will fit into the target type.
请注意,由于 defect report 1449,措辞从最初的 C++11 标准草案更改为我在上面引用的内容.
关于C++11: "narrowing conversion inside { }"带模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974775/
我想在一个函数中包含一个限制语句,该函数测试在使用 org-narrow-to-subtree 之后缓冲区是否已经缩小到子树。谁能与我分享如何测试收窄条件是否有效?类似于 narrowp。 编辑:我在
static int var[2] __attribute__ ((aligned (8))) = { 0x0255cfa8, 0xfdfcddfc }; 为什么我收到警告:narro
我想做一个像mcmaster.com网站那样的侧边栏菜单。它允许您动态缩小产品范围并切换选项。正如您在图像中看到的,当选择“公制”选项时,所有页面都会根据基于公制的产品、侧边栏以及整个页面进行更改。有
我们阅读了 git narrow clones .假设我们想在极端情况下使用这个新功能最小带宽从大量远程存储库编辑一个文件并推回我们的提交。 唯一的例子是 git clone --no-checkou
我是C++的初学者,对转换有疑问。将int转换为char值时,如果在ASCII表上超过127,会发生什么? 例如, using namespace std; int main() { double d
(Postgres 8.3) 我正在使用 X 100 多列宽的数据库表(遗憾的是我无法更改),其中许多列会通过正常的业务流程不断且非常频繁地更新。 我需要根据异常业务流程更新的 X 中特定列 foo
我想对此进行过滤,以便最终返回的列表中仅包含平均数量大于 350 的部件(因此部件 P3、P4 和 P6)。我尝试使用 *SELECT """"WHERE AVG(spjandq.qty)>350 I
我正在尝试从 sourceforge 编译 hosts3d,它确实编译但生成了几个缩小错误。我不知道如何解决这个问题,但我们将不胜感激任何帮助。我怀疑我可以下载以前版本的编译器,我可能最终会这样做,但
C++ Core Guidelines有一个 narrow如果类型转换更改值,则抛出。看着 microsoft implementation图书馆: // narrow() : a checked v
问题: 我的导航栏看起来一点都不像 http://jquerymobile.com/test/docs/toolbars/footer-persist-a.html 中示例中的导航栏 我做错了什么/有
假设我有一个类型族,我在基本类型中定义了一组方法: interface Foo { Foo a(); Foo b(); ... } 并且Bar扩展了Foo interface Bar
我在我的应用程序中使用此字体时遇到问题。我已经在我的资源中导入了 Arial-Narrow.ttf 文件,并且还在 info.plist 中添加了名称,如下所示 UIAppFonts Ari
假设我有一段 HTML 的结构如下: Loooooooooooooong Short Meeeedium ...我想利用 CSS 获得
我一直在为一个学校元素编码,我遇到了这个问题,我想要一个标题而不是宽泛的标题。我是 Stack Overflow 的新手,我希望我不是在问一个非常愚蠢的问题,但我在事先搜索时没有找到答案。 我的代码是
我正在查看 Bootstrap 站点示例 http://getbootstrap.com/examples/jumbotron-narrow/#当我将鼠标悬停在“关于”或“联系”链接上时,文本周围会出
我正在尝试编写一个简单的无状态 session bean,但我在查找时间中给出的窄引用有问题。我得到了 class cast exeption 我用 eclipse IDE 我的 bean 类 pac
我尝试在启用 gcc 和 C++11 的情况下编译以下代码: unsigned int id = 100; unsigned char array[] = { id % 3, id % 5 }; 我收
#main{ margin-left: auto; margin-right: auto; margin-top: 0; font-family: "Arial Narrow"; position
g++ 4.9.0-O2 -std=c++11 template struct vec3 { T x, y, z; vec3() = default; vec3(const v
我正在使用 prettyprinter 图书馆到prettyprint foo(bar, baz) ,当边距太窄时,我希望它看起来像: foo( bar, baz) 我怎么做? 到目前为止我最
我是一名优秀的程序员,十分优秀!