-3

戻り値がない場合、C の関数は何を返しますか?

たとえば、このコード:

#include <stdio.h>

int x;
f1(void);
f2(void);

main()
{
  x=10;
  printf("x = %d, ",x);
  printf("x = %d, ",f1());
  printf("x = %d, ",f2());
}   

f1(void)
{
}  

f2(void)
{
}
4

2 に答える 2

3

これはもはや正当な C ではありませんがf1f2暗黙的に を返しintているため、おそらくスタックの一番上にあったものに基づいて、ランダムな値が返されます。

于 2013-09-07T16:01:14.367 に答える
3

型が宣言されていない関数はint、古いバージョンの C で返されると見なされますが、この動作に依存したくはありません。(さらに、通常はこれに対して警告が表示されます)。

関数は何も実行しませんreturnが、戻り値が暗黙的に宣言されているためint、プログラムは未定義の動作を示します。

于 2013-09-07T16:01:26.393 に答える