Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> سوالهايي در مورد ++C
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه 1, 2, 3 ... 11, 12, 13  بعدي

سوالهايي در مورد ++C
نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


4 شنبه 9 خرداد 1386 - 00:23
پاسخ بصورت نقل قول
آقا من شروع كردم و مشكلاتم رو اينجا مي پرسم . اميدوارم كه من رو تحمل كنيد ! و به سوال هام جواب بديد .

اولين سوال :

در يه برنامه مي خواهيم مقدار جمع دو متغير رو در صفحه چاپ كنيم .
بعد از تعريف متغيرها و گرفتن مقدار و جمع به قسمت چاپ مي رسيم :

كد:
cout << "sum is " << sum << endl;


خوب اين چيزي بود كه تو كتاب نوشته بود و توضيح داده كه " endl يك نو سطر ! ( new line ) را چاپ و سپس بافر خروجي را تخليه مي كنه ."

اگه مي شه كمي بيشتر توضيح بديد و بگيد من اگه از اين كد استفاده كنم چه فرقي با كد بالا داره :

كد:
cout << "sum is " << sum << "\n";

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


4 شنبه 9 خرداد 1386 - 09:06
پاسخ بصورت نقل قول
از نظر ظاهر كار هر دو يك كار رو برايت انجام مي دن، ولی endl علاوه بر تعویض خط، متد flush() رو در stream صدا می کنه و بنا بر این کمتر از "/n" کار آمده.
اما flush کردن stream چه فایده ای داره؟ :: مثلا شما از کاربر می خواهید کاری انجام بده و بعد ازش یه ورودی می خواهید، بنابر این prompet رو در اختبارش قرار می دید. ولی در بعضی از سیستم عامل ها تا وقتی stream رو flush نکنید prompet نشون داده نمی شه و کاربر یه سری کاراکتر رو می بینی ولی نمی دونه باید چی کار کنه (prompet رو نمی بینه!) ( prompet اون خط کوچیکس که توی DOS موقع تایپ می بینی « _ » )
این در Cpp بدرد بخور نیست چون گرفتن ورودی از cin انجام می شه که خودش در هر حال stream رو flush می کنه و prompet رو نشون میده...
توصیه می کنم به طور معمول از endl استفاده نکن ، البته اون واسه قدیم ندیم هاست، الان دیگه CPU ها قدرت زیادی دارن و یه flush کردن که دیگه این حرف ها رو نداره بابا(مامان)

راستی ، الکی تو این تاپیک چرند ننویسید ها ، فقط سوال و جواب در مورد Cpp.( اصولا کسی تو این تالار نمی اد که بخواد چرند هم بنویسه !!! )

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


4 شنبه 9 خرداد 1386 - 10:00
پاسخ بصورت نقل قول
فرقش تو همونه که خودت گفتی.
ببین متنی که به مانیتورت برای چاپ ارسال میشه به دلایل مختلفی بافر میشه. یعنی کارکترهایی که برای خروجی فرستاده میشن در جا توی مانیتور چاپ نمیشن. چندین کاراکتر که فرستاده شدن در یه حافظه کوچیکی ذخیره میشه. و در زمان مورد نیاز یک جا نوشته میشه. endl کامپیوتر رو مجبور میکنه که محتویات بافر رو چاپ کنه.

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


4 شنبه 9 خرداد 1386 - 11:06
پاسخ بصورت نقل قول
ممنون .

نقل قول:

این در Cpp بدرد بخور نیست چون گرفتن ورودی از cin انجام می شه که خودش در هر حال stream رو flush می کنه و prompet رو نشون میده...


پس اين بايد يكي از نكات قابل حمل بودن برنامه باشه ؟ endl براي نوشتن برنامه ها قابل حمل استفاده مي شه ؟؟

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


4 شنبه 9 خرداد 1386 - 11:31
پاسخ بصورت نقل قول
میشه گفت درسته.

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


4 شنبه 9 خرداد 1386 - 12:16
پاسخ بصورت نقل قول
بله تقريبا
اگه سرس endl رو ببینی این طوریه

كد:

*nix: '\n'
MS-DOS/MS-Windows: '\r\n'
MAC: '\r'


یعنی برای سیستم های مختلف ، دستور تعویض خط فرق می کنه.

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


2 شنبه 14 خرداد 1386 - 01:32
پاسخ بصورت نقل قول
بچه ها ممنون . فعلا از هر دو استفاده مي كنم به اين شكل كه هر جا با "" داشتم به پايان خط مي رسيدم از n\ استفاده مي كنم . و هر جا كه "" نبود و مجبورم از >> بزارم از endl استفاده مي كنم . گرفتيد ؟!

سوال جديد :
من يه متغير تعريف مي كنم با cin يه عدد بهش مي دم و با cout بلافاصله مقدارش رو مي خونم . خوب هر عددي كه با غير صفر شروع بشه خودش رو نشون مي ده ولي اگه قبل از شروع يه صفر بزارم يه عدد ديگه نشون مي ده . تعداد صفرها هم مهم نيست با افزايش صفرها مقدار ثابته ولي همون طور كه گفتم اشتباه نشون مي ده !

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


2 شنبه 14 خرداد 1386 - 10:26
پاسخ بصورت نقل قول
خوب تا من حالا امتحان نکردم ولی تصور می کنم این جور که گفتی باید معادل هگزش رو بهت نشون داده باشه. یه امتحانی بکن.

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


2 شنبه 14 خرداد 1386 - 10:39
پاسخ بصورت نقل قول
مثلا 010 رو 16 چاپ نمیکنه؟

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


2 شنبه 14 خرداد 1386 - 10:59
پاسخ بصورت نقل قول
نه ! خيلي عجيب غريبه ! 017 مي زني مي شه 15 - 020 مي زني مي شه 16 !! - 018 مي زني مي شه 1 !!!!

اصلا بيا خودت امتحان كن :

http://gamer2006.persiangig.com/other/1.EXE

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 13 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه 1, 2, 3 ... 11, 12, 13  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |