اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

عملگر کاما (,) در شرط حلقه

0 امتیاز
1,208 نمایش

وقتی از , در شرط حلقه استفاده می‌کنیم همون معنی عملگر کاما رو داره یا این‌جا معنی جدیدی پیدا می‌کنه؟ مثال

for(int i=0, int j=10; i>j; i++, j--);
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده پنجشنبه ۸ فروردین ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

برنامه‌ی زیر رو تست کردم

#include <iostream>
using namespace std;

int main()
{
  int a = 0;
  for(int i=0, j=0; i<5 && j<5; a = i++, j++)
    cout<<"i : "<<i<<", j = "<<j<<", a = "<<a<<endl;
  return 0;
}

خروجی این شد:

i : 0, j = 0, a = 0
i : 1, j = 1, a = 0
i : 2, j = 2, a = 1
i : 3, j = 3, a = 2
i : 4, j = 4, a = 3

برنامه‌ی زیر رو با تغییر j++ به ++j تست کردم

#include <iostream>
using namespace std;

int main()
{
  int a = 0;
  for(int i=0, j=0; i<5 && j<5; a = i++, j++)
    cout<<"i : "<<i<<", j = "<<j<<", a = "<<a<<endl;
  return 0;
}

خروجی تغییر نکرد!!! تا این‌جا این به دست اومده که این کاما همون کار معمول و می‌کنه. یعنی مقدار آخرین عبارت کاما یعنی سمت راست‌ترین رو برمی‌گردونه.
اما چرا این دوتا خروجی‌ها یکی شد خب؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده شنبه ۳۱ فروردین ۱۳۹۲ توسط prodo  
ویرایش شده دوشنبه ۲ اردیبهشت ۱۳۹۲ توسط prodo

لطفا اصلاح كنيد.
با تغییر j++ به ++j

با ++i هم خروجي تغيير نميكنه؟

چرا!!! تغییر کرد. خیلیی ممنون. فهمیدم اشتباهم کجا بوده. یه اشتباه انگار مبتدیانه ولی ریز!
a = i++, j++ تعبیرش می‌شه (a = i++), j++ بنابراین a مقدار i رو می‌گیره نه j.
باید مثال رو با a = (i++, j++) می‌نوشتم. بنابراین این کاما همون کاماست!
ممنون بازم.

خواهش ميكنم.
خوشحالم كه جواب سوال پيدا شد...