問題タブ [undefined-behavior]

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 投票する
2 に答える
839 参照

c++ - `x--> 0 && array [x]`はC++で明確に定義された動作ですか?

xブール式を左側でポストインクリメントするときに、ブール式の両側で使用できますか?

問題の行は次のとおりです。

それは標準で定義されていますか?array [x]はの新しい値xまたは古い値を使用しますか?

0 投票する
2 に答える
844 参照

c++ - 「上書き」中の Stringstream write() の問題

現在、私はと呼ばれる文字列ストリームを持っていDataます。次を使用して、文字列ストリームの先頭を探しています。

次に、stringstream の最初の 8 バイトに 2 つの整数を書き込んでみます (以前は、最初の 8 バイトは 0 に設定されていました)。

dataLengthVisual C++ デバッガーを使用してブレークポイントを設定すると、それが 12 と 0 に等しいことがわかりますdataFlags。したがって、それぞれ 12 と 0 を書き込む必要があります。

2つの整数を書き込んだ後、効果がないように見えました。次に、次のコードを使用して stringstream データを出力します。

最初の 12 バイトを 2 つの整数 (最初の整数 != 0) で上書きしたにもかかわらず、データの最初の 8 バイトがまだ 0 であることがわかります。

stringstream のデータが正しく上書きされないのはなぜですか?

0 投票する
9 に答える
2203 参照

c - C プログラミング #define?

重複の可能性:
誰でもこれらの未定義の動作を説明できますか (i = i++ + ++i 、 i = i++ など…)

コードの出力が何であるかを知っています。

#define が他のプログラムで機能するように、上記のコードで機能しないのはなぜですか?

0 投票する
2 に答える
576 参照

c++ - A function declared to return int returns nothing. Is this Undefined Behavior?

This is a valid function in C++:

The following definition causes UB:

The question: Does the following expression statement cause UB?

Quote from the standard would be very much welcome.

0 投票する
0 に答える
1320 参照

c++ - 未定義の動作とは何ですか?

私が読み続けているこの未定義の動作は何ですか? なぜ悪魔が私の鼻から飛び出すのですか?

0 投票する
3 に答える
324 参照

c++ - この未定義の動作はなぜですか?

次の特定の式が未定義の動作を引き起こすのはなぜですか?

私の質問は、ここのアルスの質問の影響を受けています

0 投票する
8 に答える
31182 参照

c++ - const メンバーと代入演算子。未定義の動作を回避するには?

オブジェクトの std::vector と const-correctnessに関する質問に回答し、未定義の動作に関するコメントを受け取りました。同意できないので、質問があります。

const メンバーを持つクラスを考えてみましょう。

const_cast代入演算子が必要ですが、回答の1つから次のコードのように使用したくありません。

私の解決策は

未定義の動作 (UB) はありますか?

UB なしのソリューションは何でしょうか?

0 投票する
5 に答える
116455 参照

c++ - 未定義の動作とシーケンス ポイント

「シーケンスポイント」とは?

未定義の動作とシーケンス ポイントの関係は?

a[++i] = i;私は気分を良くするために、 のような面白くて複雑な表現をよく使います。なぜそれらの使用をやめなければならないのですか?

これを読んだ場合は、フォローアップの質問Undefined behavior and sequence points reloadedに必ずアクセスしてください。

(注: これはStack Overflow の C++ FAQへのエントリであることを意図しています。FAQ をこの形式で提供するという考えを批判したい場合は、すべての始まりとなった meta への投稿がそれを行う場所になります。回答への回答その質問は、FAQ のアイデアが最初に始まったC++ チャットルームで監視されているため、アイデアを思いついた人にあなたの回答が読まれる可能性が非常に高くなります。)
0 投票する
4 に答える
396 参照

c++ - C++ コンパイラは、未定義の動作として分類される構造に遭遇すると、ランダム コードを発行できますか?

重複の可能性:
未定義、未指定、および実装定義の動作

C++ の未定義の動作について理解を深めようとしています。C++ コンパイラが未定義の動作のいくつかのケースを意図的に検出するとします。たとえば、2 つのシーケンス ポイント間で変数を 2 回変更する場合です

その架空のコンパイラがそのような状況を確実に検出すると、生成されたマシン コードに 10 個の完全にランダムなマシン命令を発行すると言います。

C++ 標準によると、何かが UB として分類される場合、何が起こるかについての要件はありません。記述されている架空のコンパイラは C++ 標準に準拠していますか?

0 投票する
3 に答える
391 参照

c++ - C ++標準の未定義動作段落の[注]はどういう意味ですか?

ユーザーTonyが 指摘しているように、C++標準の1.3.12項に[注]があります。

許容される未定義の動作は、予測できない結果を伴う状況を完全に無視することから、環境に特徴的な文書化された方法での翻訳またはプログラムの実行中の動作にまで及びます。

これは、UBの定義と矛盾しませんか...この国際規格は要件を課していませんか?つまり、同じ段落で「要件なし」と言ってから「許容UB」と言うのです。

このメモはどのように解釈されるべきですか?それは確かにUBを何らかの形で制限しますか?