このコードが無限ループに陥るのはなぜですか?

ASDF

LLVMバージョン5.0.0

私はこのコードを作成し、clang / llvmでビルドします。しかし、なぜこのコードが無限ループに変換されるのか理解できません。

このコードは、ビルド用の私のc ++コードです。

#include <stdio.h>

int foo()
{
  for (int j= 0; j < 23; j++)
    putchar('a');
}
int main()
{
  foo();
}

次のコマンドラインを使用しました。

clang -O0 a.cpp // a.out not working
clang -O1 a.cpp
-O2 -O3 ... also

LLVM-IRにもエラーがあります。

clang -S -O1 -emit-llvm a.cpp
clang -S -O1 -mllvm -disable-llvm-optzns -emit-llvm a.cpp 
   + opt -S -O1 a.ll

define i32 @_Z3foov() local_unnamed_addr #0 {
entry:
  br label %for.cond

for.cond:                                         ; preds = %for.cond, %entry
  %call = tail call i32 @putchar(i32 97)
  br label %for.cond
}

しかし、このコードは非常にうまく機能しました。

int main()
{
  for (int j= 0; j < 23; j++)
    putchar('a');
}
ブラッドリー

あなたの関数にreturn文が欠落し、しているint foo()int main()これにより、ISO C ++標準セクション6.6.3で指定されている未定義の動作が発生する可能性があります。

関数の終わりから流れ出るのは、値のない戻りと同じです。これにより、値を返す関数で未定義の動作が発生します。

後にエラーが表示されるはずです clang -O0 a.cpp

a.cpp:7:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.

これがあなたのために働くはずのバージョンです:

#include <stdio.h>
#include <stdlib.h>

int foo()
{
  for (int j= 0; j < 23; j++)
    putchar('a');
  return 0;
}

int main()
{
  foo();
  return EXIT_SUCCESS;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

なぜこれが無限ループに陥るのですか?

分類Dev

このbashプログラムが無限ループに陥るのはなぜですか?

分類Dev

なぜこれが無限ループに陥らないのですか?

分類Dev

このソリューションが無限ループに陥らないのはなぜですか?

分類Dev

リーダーが無限ループに陥っているのはなぜですか

分類Dev

このアセンブリコードが無限ループになるのはなぜですか?

分類Dev

このコードが無限ループになるのはなぜですか?

分類Dev

このCコードが無限ループになるのはなぜですか?

分類Dev

keras LSTMモデルが無限ループに陥るのはなぜですか?

分類Dev

このコードが無限ループに入るのはなぜですか?

分類Dev

このReactコードで無限ループが発生するのはなぜですか?

分類Dev

getchar()で入力を取得すると、無限ループに陥るのはなぜですか?

分類Dev

このjavascriptループが無限に戻るのはなぜですか?

分類Dev

なぜbreaking-retain-cycleはこのように無限ループに陥らないのでしょうか?

分類Dev

このgithubプロジェクトを使用しようとすると、無限ループに陥るのはなぜですか?

分類Dev

このコードが無限ループを引き起こさないのはなぜですか?

分類Dev

このコードが無限ループを引き起こすのはなぜですか?

分類Dev

このコードが無限ループを引き起こすのはなぜですか

分類Dev

ここでforループが無限ループになるのはなぜですか?

分類Dev

このメソッドが無限ループに入るのはなぜですか?

分類Dev

「セマフォの更新」でソナーランナー分析が無限ループに陥るのはなぜですか

分類Dev

JavaScriptコードに潜在的な無限ループがあるのはなぜですか?

分類Dev

コードが無限ループを作成しているときに、このJavaが実行するのはなぜですか?

分類Dev

これがwhileループで無限ループになるのはなぜですか?

分類Dev

これがwhileループによって無限ループが発生するのはなぜですか?

分類Dev

なぜこれが無限ループになるのですか?

分類Dev

なぜこれが無限ループ[SICP]になるのですか?

分類Dev

次のコードが無限再帰になるのはなぜですか?

分類Dev

数が772000000000000以上の場合、Pythonコードが無限ループを生成するのはなぜですか?

Related 関連記事

  1. 1

    なぜこれが無限ループに陥るのですか?

  2. 2

    このbashプログラムが無限ループに陥るのはなぜですか?

  3. 3

    なぜこれが無限ループに陥らないのですか?

  4. 4

    このソリューションが無限ループに陥らないのはなぜですか?

  5. 5

    リーダーが無限ループに陥っているのはなぜですか

  6. 6

    このアセンブリコードが無限ループになるのはなぜですか?

  7. 7

    このコードが無限ループになるのはなぜですか?

  8. 8

    このCコードが無限ループになるのはなぜですか?

  9. 9

    keras LSTMモデルが無限ループに陥るのはなぜですか?

  10. 10

    このコードが無限ループに入るのはなぜですか?

  11. 11

    このReactコードで無限ループが発生するのはなぜですか?

  12. 12

    getchar()で入力を取得すると、無限ループに陥るのはなぜですか?

  13. 13

    このjavascriptループが無限に戻るのはなぜですか?

  14. 14

    なぜbreaking-retain-cycleはこのように無限ループに陥らないのでしょうか?

  15. 15

    このgithubプロジェクトを使用しようとすると、無限ループに陥るのはなぜですか?

  16. 16

    このコードが無限ループを引き起こさないのはなぜですか?

  17. 17

    このコードが無限ループを引き起こすのはなぜですか?

  18. 18

    このコードが無限ループを引き起こすのはなぜですか

  19. 19

    ここでforループが無限ループになるのはなぜですか?

  20. 20

    このメソッドが無限ループに入るのはなぜですか?

  21. 21

    「セマフォの更新」でソナーランナー分析が無限ループに陥るのはなぜですか

  22. 22

    JavaScriptコードに潜在的な無限ループがあるのはなぜですか?

  23. 23

    コードが無限ループを作成しているときに、このJavaが実行するのはなぜですか?

  24. 24

    これがwhileループで無限ループになるのはなぜですか?

  25. 25

    これがwhileループによって無限ループが発生するのはなぜですか?

  26. 26

    なぜこれが無限ループになるのですか?

  27. 27

    なぜこれが無限ループ[SICP]になるのですか?

  28. 28

    次のコードが無限再帰になるのはなぜですか?

  29. 29

    数が772000000000000以上の場合、Pythonコードが無限ループを生成するのはなぜですか?

ホットタグ

アーカイブ