ここから本文です

引数にvoid宣言した関数としない関数では、何が違ってきますか?

jys********さん

2007/9/2111:15:19

引数にvoid宣言した関数としない関数では、何が違ってきますか?

閲覧数:
11,708
回答数:
3
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

jod********さん

編集あり2007/9/2113:04:29

引数に明示的に void と宣言されていない関数は、正しくは可変引数の関数ということになります。
その後引数を参照するコードがなければ多くのコンパイラは引数がvoid型のものと同じ出力をするかもしれません。
一方、戻り値が明示的に指定されていない関数は、int型の戻り値を持つ関数と解釈されます。
呼び出した側で戻り値を参照しないのならば、予期しないような動作はしないでしょう。
いずれにしても、誤解を生まないように、戻り値の型と引数の型は記述した方が良いと思います。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

drs********さん

編集あり2007/9/2120:20:25

C++では違いはありません。void がない場合、void を省略したものとみなされます。

C言語ではプロトタイプ宣言では void は必ず記述する必要があります(ANSI-C 以降)。
関数定義ではvoidを省略してもよいですが、この時 void のあるなしで挙動が変わることはありません。

(参考 http://wisdom.sakura.ne.jp/programming/cpp/cpp3.html

C と C++の互換性を考えるなら void をきちんと明記しておいた方が無難です。
なお、現在のC標準では可変引数は「...」で表します。

mak********さん

2007/9/2112:09:07

C言語の場合、関数を型宣言しなければ、デフォルトで int 型を返すものとみなされます。この場合、その関数内で return 0; とか明示的に戻り値を返さないと、戻り値が不定になりますので、戻り値によって処理を分岐させることは出来ません。
※ 処理系(コンパイラ)によっては警告が出たり、エラーになる場合があります。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる