cost 107 ms
C/C++ 中的位域:什么是保证的,什么是实现定义的? - Bit-Fields in C/C++: what is guaranteed, what is implementation-defined?

阅读https://en.cppreference.com/w/c/language/bit_field ,以下结论是否正确? 相邻的位字段之间没有填充(这在 C 标准的 6.7.2.1 中似乎有所不同)。 位字段在存储单元中的放置是实现定义的。 位域中的位 position 是实现定义的。 ( ...

MISRA C 中的源参考是什么? - What is source references in MISRA C?

在 MISRA C 文档中,有关于“源参考”的解释,并且有一个表格,其行是:未指定、未定义、实现定义、特定于区域设置、MISRA 指南、K&R、Koenig 和 IEC 61508,并将这些作为源参考引入。 我研究了未指定、未定义、实现定义和特定于语言环境的行为。 我对他们有些熟悉了。 但 ...

C - 是否在使用未定义的 memset 设置后读取 _Bool,实现已定义? - C - Is reading a _Bool after setting it with memset undefined, implementation defined?

在 ISO 标准 C 中,我的理解是没有任何东西可以真正确定 _Bool 的表示形式,但它确实说: “_Bool 足够大以容纳值 0 和 1” “当任何标量值转换为 _Bool 时,如果该值比较等于 0,则结果为 0;否则,结果为 1” “_Bool 中的位数至少为 CHAR_BIT,_Bo ...

超出范围时转换为签名类型行为 - Conversion to signed type behavior when out of range

当源值不能在目标类型中表示时,将 integer 转换为有符号类型是根据cppreference 实现定义的(直到 C++20) 等于源值模 2^n的目标类型的唯一值,其中 n 是用于表示目标类型的位数 (C++20 起) 在GCC实现定义的行为中也指定了,有为了转换为宽度为 N 的类型,该值将以2 ...

条件包含:字符常量的数值:在#if/#elif 内与没有#if/#elif:为什么匹配是实现定义的? - Conditional inclusion: numeric value for the character constants: within #if/#elif vs. without #if/#elif: why matching is implementation-defined?

案例 A:C11,6.6 常量表达式,语义,5: 如果在翻译环境中计算浮动表达式,则算术范围和精度应至少与在执行环境中计算表达式一样大。 116) 这需要以下程序返回 0: 案例 B:C11,6.10.1 条件包含,语义,4: 这些字符常量的数值是否与表达式中出现相同字符常量时获得的值相匹配(# ...

是否存在 %p 格式说明符不会以 0x.. 格式打印地址的情况 - Is there any case where %p format specifier will not print address in 0x.. format

在 C 中,我正在从控制台读取地址并将其存储在变量中。 我需要以十六进制(0x ...)格式记录地址。 我有两个选择: %p %X 我已经尝试过选项 2 (%x)。 它在 32 位和 64 位平台上的工作方式不同。 这导致程序行为不准确。 现在第二个选项 (%p) 也是实现定义的。 所以我想知道 ...

索引“unsigned long”变量并打印结果 - Indexing an `unsigned long` variable and printing the result

昨天,有人给我看了这段代码: 这导致: 我很困惑,主要是for循环中的那行。 据我所知,似乎&foo被强制转换为unsigned char *然后被i添加。 我认为*(((unsigned char *) &foo) + i)是一种更冗长的写作方式((unsigned char *) ...

为什么要为一个不给出相同值的位字段赋值? - Why is assigning a value to a bit field not giving the same value back?

我在Quora帖子中看到了以下代码: 在C&C ++中,代码的输出都是意外的 , 被禁用 !! 虽然在那篇文章中给出了“符号位”相关的解释,但是我无法理解,我们如何设置某些内容然后它不会反映出来。 有人可以给出更详细的解释吗? 注意 :标签c和c ++都是 ...

它的实现定义了哪些算法可以接受可变的lambda吗? - Is it implementation defined which algorithms can accept a mutable lambda?

我在这里发现lambda是按值捕获的。 这意味着,如果算法内部使用第二个按值接受λ的算法,则不会保留λ的任何可变状态。 我将在此处重新发布我的链接问题示例: 所以在写我最初的问题时, remove_if已为mutable lambda实现定义了行为。 是否有实现定义的其他功能的列表 ...

如何在不调用未定义或实现定义的行为的情况下从 uint8_t 缓冲区读取有符号整数? - How can I read a signed integer from a buffer of uint8_t without invoking un- or implementation-defined behaviour?

这是一个简单的函数,它尝试从 big-endian 缓冲区读取通用二进制补码整数,我们将假设std::is_signed_v<INT_T> : 不幸的是,这是未定义的行为,因为最后一个<<=移入符号位。 所以现在我们尝试以下操作: 但是我们现在在static_ca ...

有符号右移:哪个编译器使用逻辑移位 - Signed right shift: which compiler use logical shift

我用 Visual Studio、Ubuntu 的 GCC、英特尔编译器、MinGW 测试了右移。 所有的符号位都移位。 我猜 Xcode 的 GCC 也是如此。 我知道这种行为是特定于实现的,但看起来所有主要的桌面/服务器编译器都实现了算术转换。 是否有任何广泛使用的编译器不会改变符号位? 谢 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM