1

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 つを取得します。

4

1 に答える 1