「for」で使用される式に対して常にエラー ((IntelliSense: expression must be a modifiable lvalue )) が発生します。助けてください。
for (c=2 ; c <= x -1 ; c++ )
if ( x % c = 0 )
cout << "not prime" ;
else cout << "prime";
「for」で使用される式に対して常にエラー ((IntelliSense: expression must be a modifiable lvalue )) が発生します。助けてください。
for (c=2 ; c <= x -1 ; c++ )
if ( x % c = 0 )
cout << "not prime" ;
else cout << "prime";
x % c
の結果をと比較しようとしていると思います0
。この場合、
if ( x % c = 0 )
これは
// --------v
if ( x % c == 0 )
追加に注意してください=
。
その理由は、x % c
変更可能な左辺値を返さず、 を 1 つだけ使用して、 の結果=
に代入しようとしているためです。これは間違っています。0
x % c
私が知る限り、おそらくここでは==
なく次のことを意味していました。=
if ( x % c = 0 )
このように:
if ( x % c == 0 )
%
最初のケースでは、一時的で割り当てられない操作の結果に割り当てようとしています。この前のスレッドは、一時的な問題のいくつかをカバーしています。この記事はもう少し詳しく説明していますが、C および C++ での左辺値と右辺値についての理解を深めることができるでしょう。
=
行にがありませんif
:
for (c=2 ; c <= x -1 ; c++ )
if ( x % c == 0 )
cout << "not prime" ;
else cout << "prime";
(あなたのコードは、数値が素数かどうかを教えてくれるわけではありません。それよりも小さいすべての数値の倍数であるかどうかを出力します)
がありません=
:
if ( x % c == 0 )
^^----
=
は割り当て、==
は等価テストです。
をもう一度見たほうがいいと思いますx % c == 0
。x modulo c の結果にゼロを代入しています。
私にとって、あなたのコードは次のようにうまく機能します(Objective-Cなので、@cout@はありません。@NSLog();@を使用します:
for ( c = 2; c <= x-1; c++ )
if ( x % c == 0 ) NSLog(@"not prime");
else NSLog(@"prime");