ورود

View Full Version : سوال: نتیجه اعمال عملگر ++ قبل و پس از Operand



bahar_azadi
یک شنبه 29 خرداد 1390, 09:24 صبح
با سلام
من در یک نسخه قدیمی کتاب جعفر نژاد که کتاب جامع توربو سی هست دیدم که :
برای x++ مقدار فعلی عملوند در عبارت مورد استفاده قرار می گیرد و سپس عملگرها روی آن عمل می کند.



در حالی که درست عکس این حالت است
آیا عملگر ++و -- در دو حالت قبل و بعد از عملگر نتایج شان در سی و سی پلاس پلاس با هم متفاوت است ؟
یعنی در سی برای x++ مقدار فعلی عملوند در عبارت مورد استفاده قرار می گیرد و سپس عملگرها روی آن عمل می کند
ولی در سی پلاس پلاس برای ++x مقدار فعلی عملوند در عبارت مورد استفاده قرار می گیرد و سپس عملگرها روی آن عمل می کند.
آیا این برداشت درست است؟

.:saeed:.
یک شنبه 29 خرداد 1390, 10:51 صبح
بله . البته سوال آخر یکم ایراد داره ولی در هر صورت اگر بنویسیم
a = b++;//nothing
مقدار فعلی b به a نسبت داده میشه و مقدار b یه واحد افزایش پیدا میکنه ولی
a = ++b;//nothing اول مقدار b رو یه واحد زیاد میکنه و بعد مقدار جدید رو به a نسبت میده . جاهای دیگه هم میتونید استفاده کنید . مثلا توی صدا زدن تابع . اندیس دهی ارایه و ...

developing
دوشنبه 30 خرداد 1390, 12:06 عصر
با سلام

ضمن تایید گفته های آقا سعید باید اضافه کنم که:
++ قبل از عملگر بیشترین اولویت رو داره چون به عنوان عملگر یکانی محسوب خواهد شد و
++ بعد از عملگر کمترین اولویت رو داره حتی از انتساب == هم پایین تر

این یعنی اینکه اگر من یک خط کد بنویسم که توی اون ++ قبل از یک متغیر باشه ابتدا مقدار اون متغیر افزایش پیدا می کنه و بعد بقیه دستورات به ترتیب اولویت انجام می شن و
اگر ++ بعد از یک متغیر به کار برده شود ابتدا تمام عملگر ها کار خودشون رو انجام می دن بعد از اینکه انتساب هم انجام شد یکی به مقدار متغیر اضافه خواهد شد.