アプリ版:「スタンプのみでお礼する」機能のリリースについて

c言語の勉強を のんびりやっています。
オライリージャパン C実践プログラミング 第3版P84 実習6-1
2点間の距離を算出するプログラムを作ってみました。

/*------------------------------------------------------------------
プログラム名 j06-1.c

2点の座標 (x1,y1)(x2,y2)を与え、距離を計算する

入力は、数 スペース 数 スペース 数 スペース 数 エンター 
--------------------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
charline[100] ;/*入力行*/
intx1, y1, x2, y2; /* 座標 */
floatdistance; /*距離*/

int main(void)
{
distance = 0;
printf("Enter coordinates \n");
fgets(line, sizeof(line), stdin);
sscanf(line, "%d %d %d %d", &x1, &y1, &x2, &y2);

distance = ((x1 - y1)*(x1 - y1)+(x2- y2)*(x2 - y2));
printf("Distance is %f \n", sqrt(distance));
return 0;
}
Microsoft Visual C++ (ver6)でコンパイルすると次のエラーメッセージが出ます。

--------------------構成: j06-1 - Win32 Debug--------------------
コンパイル中...
j06-1.c
C:\c_program_file\j06-1.c(16) : error C2373: 'y1' : 再定義されています。異なる型修飾子です。
c:\program files\microsoft visual studio\vc98\include\math.h(435) : 'y1' の宣言を確認してください。
C:\c_program_file\j06-1.c(26) : error C2113: ポインタ以外からポインタを減算することはできません。
C:\c_program_file\j06-1.c(26) : error C2113: ポインタ以外からポインタを減算することはできません。
cl.exe の実行エラー

j06-1.obj - エラー 3、警告 0

どうしてエラーになるのでしょう。
y1をy01などにすると実行できます。

ご存じの方教えて下さい。

A 回答 (1件)

>c:\program files\microsoft visual studio\vc98\include\math.h(435) : 'y1' の宣言を確認してください。



そういう名前の関数が定義されているから…でしょう。
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vcln …

もう少し、変数名に工夫をこらすべき…かと。
    • good
    • 0
この回答へのお礼

ありがとうございました。
やはり、よくご存じの方のアドバイスは必要です。
しばらく悩んでおりました。
コンパイラがおかしいのかと。

納得しました。
これに懲りて
y1 yn y0
は、変数に使わないようにします。

これで、次の問題に進めます。
本当にありがとうございました。

お礼日時:2012/03/22 18:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!