2013-03-26 89 views
-1

我總是得到錯誤((智能感知:表達式必須是一個可修改的左值)) 爲表達式使用與「for」,請幫助。C++編程問題

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

這是封閉的,但爲什麼每個人都缺少一個簡單點:如果數字不能被任何數字整除 - 它如何可以是質數?讓測試循環先完成! – Ajay 2013-03-27 05:34:28

+0

@Aayay - 引物編號就是這樣,它只能被一個整除。你對「素數」的理解是什麼? – 2013-03-27 07:23:24

+0

@KirilKirov - 讓我們說被檢查的數字是9 ..所以,通過循環,它被視爲素數。考慮另一個數字25,它被處理3次。明白我的意思嗎? (是的,當然,用'c%x'測試) – Ajay 2013-03-27 07:25:31

回答

1

你缺少一個=

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

=是賦值,==是一個平等的測試。

1

=賦值運算符。什麼你要找的是比較運算==

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

Live Demo

6

我想你想的x % c結果與0比較。在這種情況下,

if (x % c = 0) 

這必須是

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

注意額外=


的原因是,x % c不返回修改的左值和只使用一個=,你要assing 0x % c的結果,這是錯誤的。

2

至於我可以告訴你可能是指==,而不是=這裏:

if (x % c = 0) 

所以這樣的:

if (x % c == 0) 

在第一種情況下,你想分配給結果的%這是一個臨時操作,不能分配給操作。此前的thread涵蓋了臨時性的一些問題。這篇文章更深入一點,但可能會讓你更好地理解Understanding lvalues and rvalues in C and C++

2

你在if線缺少=

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

(不是你的代碼會告訴你,如果一個數是素數;將打印無論是每一個數字比它小的倍數)

0

我想,你應該再看看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");