我總是得到錯誤((智能感知:表達式必須是一個可修改的左值)) 爲表達式使用與「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