次のコードの出力が正しいのはなぜですか? int GGTにreturn文はありませんが、コードはとにかく動作しますか?グローバル変数は設定されていません。戻り値なしの値を返す関数
#include <stdio.h>
#include <stdlib.h>
int GGT(int, int);
void main() {
int x1, x2;
printf("Bitte geben Sie zwei Zahlen ein: \n");
scanf("%d", &x1);
scanf("%d", &x2);
printf("GGT ist: %d\n", GGT(x1, x2));
system("Pause");
}
int GGT(int x1, int x2) {
while(x1 != x2) {
if(x1 > x2) {
/*return*/ x1 = x1 - x2;
}
else {
/*return*/ x2 = x2 - x1;
}
}
}
コンパイル時に警告レベルを上げると、メッセージが表示されるはずです。 –
警告メッセージが表示されますが、なぜ機能するのかはわかりますが、コンパイラは戻り値を設定しますか誰もいない? –
[C関数はintとして定義されていますが、本体にはreturn文がありませんが、まだコンパイルされています](http://stackoverflow.com/questions/4260048/c-function-defined-as-int-but-having-no-体中静止ステートメントを返す) –