-1

「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";
4

6 に答える 6

6

x % cの結果をと比較しようとしていると思います0。この場合、

if ( x % c = 0 )

これは

// --------v
if ( x % c == 0 )

追加に注意してください=


その理由は、x % c変更可能な左辺値を返さず、 を 1 つだけ使用して、 の結果=に代入しようとしているためです。これは間違っています。0x % c

于 2013-03-26T15:05:26.300 に答える
2

私が知る限り、おそらくここでは==なく次のことを意味していました。=

if ( x % c = 0 )

このように:

if ( x % c == 0 )

%最初のケースでは、一時的で割り当てられない操作の結果に割り当てようとしています。この前のスレッドは、一時的な問題のいくつかをカバーしています。この記事はもう少し詳しく説明していますが、C および C++ での左辺値と右辺値についての理解を深めることができるでしょう。

于 2013-03-26T15:05:31.720 に答える
2

=行にがありませんif:

for (c=2 ; c <= x -1 ; c++ )
    if ( x % c == 0 )
        cout << "not prime" ;
    else cout << "prime";

(あなたのコードは、数値が素数かどうかを教えてくれるわけではありません。それよりも小さいすべての数値の倍数であるかどうかを出力します)

于 2013-03-26T15:06:03.363 に答える
1

がありません=:

if ( x % c == 0 )
           ^^---- 

=は割り当て、==は等価テストです。

于 2013-03-26T15:05:08.983 に答える
1

=代入演算子です。あなたが探しているのは比較演算子==です:

if ( x % c == 0 )
//         ^^

ライブデモ

于 2013-03-26T15:05:20.287 に答える
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");
于 2013-03-26T15:13:44.237 に答える