PDA

View Full Version : سوال: مشکل این دستور چیه؟



بانوی ایران
دوشنبه 25 آبان 1388, 01:17 صبح
سلام من یه برنامه نوشتم که برامperfect number رو چا÷ کنه
ولی وقتی از دستور زیر استفاده میکنم

if (sum=N || (sum+N)/2=N);
میزنه
19 C:\Users\DELL\Desktop\ghazal.lec\cpp\perfectnumber .cpp non-lvalue in assignment
مشکلش چیه؟

حامد مصافی
دوشنبه 25 آبان 1388, 10:20 صبح
یک مساوی، دو مساوی بنویسید!

tdkhakpur
دوشنبه 25 آبان 1388, 10:40 صبح
البته عمل شما درسته ولي در قسمت زير سيستم نميتواند عمل جايگذاري را انجام دهد.

(sum+N)/2=N
شما براي يك عمل رياضي جايگذاري را انجام داديد كه اصولا بايد يك متغيير باشد.ولي اگر اصولا براي عمل شرط بدون جايگذاري if را قرار داديد حتما بايد به جاي يك مساوي - دو مساوي قرار بديد. و همچنين بعد از if سيمي كالن ; قرار دادي كه به نوبه خود شرط را بي ثمر ميكند.

rroona
دوشنبه 25 آبان 1388, 17:54 عصر
سلام من یه برنامه نوشتم که برامperfect number رو چا÷ کنه
ولی وقتی از دستور زیر استفاده میکنم

if (sum=N || (sum+N)/2=N);میزنه
19 C:\Users\DELL\Desktop\ghazal.lec\cpp\perfectnumber .cpp non-lvalue in assignment
مشکلش چیه؟
این عبارت
sum+n/2
برابر با یک عدد میشه ، وشما میخوایین که N که یک متغیر هست رو به این عدد انتساب بدین ، که غیر ممکن میباشد.
مثلا اگر دوطرف مساوی رو جابجا کنید ارور نخواهید داشت

Salar Ashgi
چهارشنبه 27 آبان 1388, 09:56 صبح
در ++C عملگر تساوی (=) دو کاربرد متفاوت دارد :

1) set value (انتساب مقدار) : =

2)check value (چک کردن مقدار) : ==

تو حالت اول مقدار یک متغیری set میشود . مثلا در انتساب زیر :



int b = 4;
int a = b;


مقدار a ، برابر (set) میشود با مقدار b .

ولی تو حالت دوم ، برابری دو متغیر بررسی میشود :



int a = 4;
int b = 6;
if(a == b){
....
}


موفق باشید .