float 型の値を定義したいのですが; より正確には、平方根関数を使用します。
次のようになります#define hyp sqrt(pow(50,2) + pow(50,2))
。
しかし、この値は一定ではないように思われるため、いくつかの警告と型の競合があります。
一定でない理由は何ですか?
浮動小数点数は常に実行時に生成され、コンパイル時にはすべて整数ですか?
それとも、sqrt宣言が関数のスコープ内にある必要があるため、これは競合していますか?
[編集] より明確にするために: 警告は、定義された sqrt-value を使用した何らかの操作が原因で#define P + hyp
あり、そのために警告が表示されます。そして P は配列 に入れられdouble arr_ps[] = {P,...}
ます。そのsqrt-値だけで、整数に問題はありません。[/編集]
@Simon
ヘッダーファイルpoints.hがあります:
#define x 10
#define y 10
#define distance 100
#define P1x x
#define P1y y
#define hyp sqrt(pow(50,2) + pow(50,2))
#define P1x_new P1x + distance
#define P1y_new P1y + hyp
それから私はcファイルを持っています:
#include "points.h"
double arr_x[2]={P1x,P1x_new};
double arr_y[2]={P1y,P1y_new};
main(){
printf("Px: %f, Py: %f \n",arr_x[0],arr_y[0]);
printf("Px_new: %f, Py_new: %f \n", arr_x[1],arr_y[1]);
}
警告: initializer element is not constant (near initialization for 'arr_y')
- そして、私はそれらのうちの 3 つを取得します。