Skip to content

Commit

Permalink
C++26 未初期化変数の読み取り : assert結果を明記
Browse files Browse the repository at this point in the history
  • Loading branch information
faithandbrave committed Sep 30, 2024
1 parent 7f7759e commit 6b0e3d7
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions lang/cpp26/erroneous_behavior_for_uninitialized_reads.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ int g(bool b) {
unsigned char c;
unsigned char d = c; // 誤り起因動作ではない。dは誤り起因動作を引き起こす未初期化値をもつ

assert(c == d); // どちらの変数も整数昇格され誤り起因動作となる
assert(c == d); // 常に真、誤り起因動作 (整数昇格)

int e = d; // 誤り起因動作 (型変換)
return b ? d : 0; // bがtrueの場合に誤り起因動作
Expand All @@ -70,10 +70,11 @@ int main() {
int e2 = d1; // 誤り起因動作

// 処理が続行した場合…
assert(e1 == e2); // OK。誤り起因動作の結果で生成された値 (e1とe2) は、
assert(e1 == e2); // 常に真、誤り起因動作ではない。
// 誤り起因動作の結果で生成された値 (e1とe2) は、
// 誤り起因動作を引き起こす値とはみなされない
assert(e1 == d1); // 誤り起因動作
assert(e2 == d1); // 誤り起因動作
assert(e1 == d1); // 常に真、誤り起因動作
assert(e2 == d1); // 常に真、誤り起因動作

// 誤り起因動作ではないが
// d2は誤り起因動作を引き起こす未初期化値をもつ
Expand Down

0 comments on commit 6b0e3d7

Please # to comment.