PDA

View Full Version : سوال: یک چیز عجیب تو C++



amir_saniyan
جمعه 20 اردیبهشت 1387, 21:27 عصر
سلام

این C++ لعنتی هر چی هم که کار کرده باشی باز هم نمی‌تونی بگی کاملا بهش مسلطی.

کد زیر رو در نظر بگیرید:


#include<stdio.h>
#include<iostream>
usingnamespace std;
int main()
{
int i = 3;
cout << i++ << ' ' << i++ << ' ' << i++ << ' ' << i++ << ' ';
getchar();
return 0;
}


به نطرتون چی با ید چاپ کنه؟ ابتدا به نظر من اومد که:

3 4 5 6

اما اگه شما هم چنین حدسی رو زدید باید بگم اشتباه است چون چیزی که چاپ می‌شه اینه:

6 5 4 3

اگه باور نمی‌کنید خودتون امتحان کنید.

اما کسی می‌دونه چرا؟

و یا کد زیر رو در نظر بگیرید:


#include<stdio.h>
#include<iostream>
usingnamespace std;

void show(int a, int b)
{
cout << a << ' ' << b;
}

int main()
{
int i = 3;
show(i, i++);
getchar();
return 0;
}


بر عکس اون چیزی که فکر می‌کنید خروجی‌اش اینه:

4 3

کسی می‌دونه چرا این طوری می‌شه؟

emad_67
جمعه 20 اردیبهشت 1387, 22:19 عصر
در اینجا توضیح دادم
http://barnamenevis.org/forum/showthread.php?t=90482

amir_saniyan
جمعه 20 اردیبهشت 1387, 23:30 عصر
سلام دوباره

ممنون از پاسخ‌تون
راستش من اون PDF رو ندیدم اما این دو تا مساله رو دوستم به من گفت. در حالی که من چندین ساله که C++ کار می‌کنم اما این مطلب رو بلد نبودم و نمی‌دونستم. :)

soroush68
پنج شنبه 16 خرداد 1387, 15:14 عصر
برای رسیدن به خروجی اول باید دستور مورد نظر در چند دستور جدا نوشته شود و اگر در یک دستور باشد فکر کنم فرایندی که اتفاق می افتند کمی شبیه فرایندی باشد که در توابع بازگشتی اتفاق می افتند.

emad_67
پنج شنبه 16 خرداد 1387, 15:27 عصر
برای رسیدن به خروجی اول باید دستور مورد نظر در چند دستور جدا نوشته شود و اگر در یک دستور باشد فکر کنم فرایندی که اتفاق می افتند کمی شبیه فرایندی باشد که در توابع بازگشتی اتفاق می افتند.
اون لینکی رو که دادم اگه میخوندی می فهمیدی که قضیه چیه و الکی تاپیک قدیمی رو بالا نمیوردی!