多くの類似点にもかかわらず、 C と C の間には微妙な違いがあります。ここで疑問が生じます: 両方の言語で有効なコードは、それぞれの標準コンパイラーでコンパイルされた場合でも異なる結果を生成できますか?
公正な比較のための前提条件
意味のある比較を保証するため比較するには、特定の条件を確立してみましょう:
動作の相違
次のコード スニペットを考えてみましょう:
#include <stdio.h> struct f { int x; }; int main() { f(); } int f() { return printf("hello"); }
C では、一時的な f オブジェクトが作成されて破棄されるため、このコードは出力されません。ただし、C90 では、事前の宣言なしで関数を呼び出すことができるため、「hello」が出力されます。
この差異は、 C と C の f() の異なる解釈から生じます。 C では、 f() は関数呼び出しとして扱われますが、 C では、構造体の宣言とみなされます。
以上がC と C の両方で有効なコードは、コンパイル時に異なる出力を生成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。