ビルドが通るということになっていた、.cのソースコードで、1か所だけビルドエラーが

[戻る]
木村まさかず 2016/03/16(水) 11:16:19
いつも、お世話になっております。

他人のコードを読んでいます。
私自身は、あまり使わないfor文の書き方なのですが、
Visual Studio 2005を通したら、
下記でビルドエラーが出ます。
for(j = i-k; j> = 0 && v[j]<v[j+k]; j-=k)

出力としては、
1>c:\cs\wl\wl_for_visual_stdio\comp2d.c(129) : error C2059: 構文エラー : '='
1>c:\cs\wl\wl_for_visual_stdio\comp2d.c(129) : error C2143: 構文エラー : ';' が
')' の前にありません。

ここだけ通せば、プロジェクトはノーマルに出来ると思うのですが、
このfor文、文法的には、何が悪い(何と書き間違えた)と考えるのが妥当なのでしょうか?

瀬戸っぷ [E-Mail] 2016/03/16(水) 12:12:08
>j> = 0

スペースの位置、変じゃないですかね?
j >= 0
では?
おそらく、それが
「error C2059: 構文エラー : '='」にあたるかと。
で、その構文エラーのせいで
「error C2143: 構文エラー : ';' が ')' の前にありません。」
になっているんじゃないですかね?

瀬戸っぷ [E-Mail] 2016/03/16(水) 16:47:46
というワケで…手元のVC++ 2010 EEで確認。

コードは…
// 20160316_test.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
 int i,j;

 for(i = 10; i> = 0;i--)
  j = i;

 return 0;
}

で、エラーが…
1>c:\...\20160316_test.cpp(11): error C2059: 構文エラー : '='
1>c:\...\20160316_test.cpp(11): error C2143: 構文エラー : ';' が ')' の前にあり
ません。
1>c:\...\20160316_test.cpp(11): error C2143: 構文エラー : ';' が ')' の前にあり
ません。
VisualStudioのエディタ画面では"> ="の"="の下にエラー箇所を示すマークが表示されて
いますね。

ITO 2016/03/17(木) 09:18:14
http://fujima.sci.ibaraki.ac.jp/faq/for-in-c.html
http://www9.plala.or.jp/sgwr-t/c/sec06-2.html

参考になるかな?

木村まさかず 2016/03/17(木) 11:31:50
[[解決]]
皆さま。
ご回答ありがとうございました。

おっしゃる通り、スペースの位置がおかしくなっており、
for文でも、
j> = 0
の所を、
j >= 0
に直したら、通りました。
皆さま、いろいろと、ありがとうございました。

古いスレッドには追加発言できません。