我总是得到错误((智能感知:表达式必须是一个可修改的左值)) 为表达式使用与“for”,请帮助。C++编程问题
for (c=2 ; c <= x -1 ; c++)
if (x % c = 0)
cout << "not prime" ;
else cout << "prime";
我总是得到错误((智能感知:表达式必须是一个可修改的左值)) 为表达式使用与“for”,请帮助。C++编程问题
for (c=2 ; c <= x -1 ; c++)
if (x % c = 0)
cout << "not prime" ;
else cout << "prime";
你缺少一个=
:
if (x % c == 0)
^^----
=
是赋值,==
是一个平等的测试。
我想你想的x % c
结果与0
比较。在这种情况下,
if (x % c = 0)
这必须是
// --------v
if (x % c == 0)
注意额外=
。
的原因是,x % c
不返回修改的左值和只使用一个=
,你要assing 0
到x % c
的结果,这是错误的。
至于我可以告诉你可能是指==
,而不是=
这里:
if (x % c = 0)
所以这样的:
if (x % c == 0)
在第一种情况下,你想分配给结果的%
这是一个临时操作,不能分配给操作。此前的thread涵盖了临时性的一些问题。这篇文章更深入一点,但可能会让你更好地理解Understanding lvalues and rvalues in C and C++。
你在if
线缺少=
:
for (c=2 ; c <= x -1 ; c++)
if (x % c == 0)
cout << "not prime" ;
else cout << "prime";
(不是你的代码会告诉你,如果一个数是素数;将打印无论是每一个数字比它小的倍数)
我想,你应该再看看x % c == 0
。你将0赋给x模c的结果。
对我来说,你的代码行之有效如下(Objective-C的,所以没有@ COUT @,我们使用@NSLog(); //:
for (c = 2; c <= x-1; c++)
if (x % c == 0) NSLog(@"not prime");
else NSLog(@"prime");
这是封闭的,但为什么每个人都缺少一个简单点:如果数字不能被任何数字整除 - 它如何可以是质数?让测试循环先完成! – Ajay 2013-03-27 05:34:28
@Aayay - 引物编号就是这样,它只能被一个整除。你对“素数”的理解是什么? – 2013-03-27 07:23:24
@KirilKirov - 让我们说被检查的数字是9 ..所以,通过循环,它被视为素数。考虑另一个数字25,它被处理3次。明白我的意思吗? (是的,当然,用'c%x'测试) – Ajay 2013-03-27 07:25:31