[解決済み] C言語とC++の両方で有効なコードを、それぞれの言語でコンパイルすると、異なる動作になることがありますか?
2022-03-14 20:11:30
質問
CとC++には多くの違いがあり、有効なCのコードがすべて有効なC++のコードであるとは限りません。
("valid"とは、定義された動作をする標準的なコード、つまり実装に依存しない/未定義ではない/などの意味です).
CとC++の両方で有効なコード片が、以下のようなシナリオはありますか? 異なる それぞれの言語の標準的なコンパイラーでコンパイルした場合の動作について教えてください。
合理的/有用な比較にするために(私は実用的に役立つことを学びたいのであって、質問の明らかな抜け穴を見つけようとしているのではありません)、仮定してみましょう。
-
プリプロセッサ関連は一切なし(つまり
#ifdef __cplusplus
プラグマなど) - 実装で定義されたものは両言語で同じ(数値制限など)
-
各標準の合理的に最近のバージョンを比較している(例えば、C++98とC90またはそれ以降とする)。
もしバージョンが重要であれば、それぞれのどのバージョンで異なる動作が発生するのかを記載してください。
解決方法は?
CとC++で有効な次のコードは、(ほとんどの場合)異なる値が
i
をCとC++の両方で使用することができます。
int i = sizeof('a');
参照 C/C++における文字('a')の大きさ は、その違いを説明しています。
からもう一つ。 この記事 :
#include <stdio.h>
int sz = 80;
int main(void)
{
struct sz { char c; };
int val = sizeof(sz); // sizeof(int) in C,
// sizeof(struct sz) in C++
printf("%d\n", val);
return 0;
}
関連
-
[解決済み】構造体のベクター初期化について
-
[解決済み】coutはstdのメンバではない
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】CとC++におけるユニオンの目的
-
[解決済み】f(i = -1, i = -1)の挙動が未定義なのはなぜ?
-
[解決済み】C++のコードはC++03とC++11の両方で有効ですが、異なることを行うことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み】C/C++の文字('a')の大きさについて
-
[解決済み] なぜ "sizeof(a ? true : false)" は4バイトの出力をするのでしょうか?