に引数を渡すとき:引数が渡された場合、式は関数呼び出しの引数のでC:型変換は、プログラミング言語C第2版からの関数呼び出し
され、型変換も行われます関数。関数プロトタイプがない場合、charとshortはintになり、floatはdoubleになります。
キャストまたは関数プロトタイプを使用して明示的に引数の型を指定しない限り、関数の引数は常にintまたはdoubleとして渡されると渡されるという印象を受けています。
私の仮説を検証するために、私は次のコードをコンパイル:
typeconversion.c:11:警告: 'の相反するタイプのコンパイル後
#include <stdio.h> main() { unsigned char c = 'Z'; float number = 3.14f; function_call(c, number); } void function_call(char c, float f) { }
を私は次の警告を取得しますfunction_call '
typeconversion.c:7:warning:以前の' function_call 'の暗黙の宣言はここにありました
私の推測はcであり、数値は両方ともintに変換され、関数呼び出しで倍精度化され、charとfloatに変換されました。これは実際に起こったことですか?
これは良い質問です - そしてそれはすべてのパラメータが宣言して**常に**、スコープのプロトタイプを持つことが重要である理由も説明します。 –