1
{
 static int i=5;
 if(--i)
  {
   main(); 
   printf("%d ",i);
  }
}

このプログラムの出力は0 0 0 0.

このプログラムはコンパイラ エラーを表示すべきではありませんか? ここで何が欠けていますか?

4

2 に答える 2

0

mainプログラムで使用できないことを意味する特別なことは何もありませんが、コードが難読化されるため、お勧めできません。(非常に読みにくいということでコンテストに勝ったこの恐ろしいコードは、独自のメインを呼び出し、警告なしにコンパイルされます: http://research.microsoft.com/en-us/um/people/tball/papers/xmasgift/ )

プログラムの流れについて混乱している場合は、 と を切り替えることを検討してくださいmainprintf

#include <stdio.h>
void main()
{
  static int i=5;
  if(--i)
  {
    printf("%d ",i);
    main(); 
  }    
}

出力は4 3 2 1

編集:このコードは適切に使用していますint main(void)

#include <stdio.h>
int main(void)
{
  static int i=5;
  if(--i)
  {
    printf("%d ",i);
    main(); 
  }

  return 0    
}
于 2013-08-29T18:59:13.360 に答える