みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

どうしてエラーになるかわかりません

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などにすると実行できます。

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

投稿日時 - 2012-03-22 16:40:24

QNo.7377357

困ってます

質問者が選んだベストアンサー

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

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

もう少し、変数名に工夫をこらすべき…かと。

投稿日時 - 2012-03-22 17:06:26

お礼

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

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

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

投稿日時 - 2012-03-22 18:06:52

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問