-1

I always get the error ((IntelliSense: expression must be a modifiable lvalue )) for the expression used with the "for" , please help .

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

6 回答 6

6

我猜您正在尝试比较x % cwith的结果0。在这种情况下,

if ( x % c = 0 )

这必须是

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

注意额外的=.


原因是,它x % c不返回可修改的左值,并且只使用一个=,你试图评估0的结果x % 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 模 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 回答