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";
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";
我猜您正在尝试比较x % c
with的结果0
。在这种情况下,
if ( x % c = 0 )
这必须是
// --------v
if ( x % c == 0 )
注意额外的=
.
原因是,它x % c
不返回可修改的左值,并且只使用一个=
,你试图评估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 模 c 的结果。
对我来说,您的代码如下所示运行良好(Objective-C,所以没有@cout@,我们使用@NSLog();@:
for ( c = 2; c <= x-1; c++ )
if ( x % c == 0 ) NSLog(@"not prime");
else NSLog(@"prime");