是否保证字节方式的零 int 是零的表示?

Bee*_*ope 2 c++

特别是,assert保证以下内容成立:

int i;
memset(&i, 0, sizeof(int));
assert(i == 0);
Run Code Online (Sandbox Code Playgroud)

Nat*_*ica 7

int在 C++ 中,每个[basic.fundamental]/7可以有一个补、二进制补码或有符号幅度二进制表示:

类型boolcharchar16_­tchar32_­twchar_­t,和符号和无符号整数类型统称为整数类型。整数类型的同义词是整数类型。整数类型的表示应使用纯二进制计数系统定义值。[?示例:本国际标准允许整数类型的二进制补码、一的补码和带符号的幅度表示。?—?结束示例?]

在这些表示中的每一个中,对于该整数类型,全零位的值为零,因此您可以保证断言始终为真。

  • 看起来 [C++20 将强制要求二进制补码有符号整数](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0907r0.html)(C2x 可能会也)。 (3认同)