PDA

View Full Version : سوال: تعريف داده boolean در زبان c



sarlakhadi
پنج شنبه 07 خرداد 1388, 11:54 صبح
با سلام. لطف مي كنيد بگيد داده بولين چطور در زبان ‍c تعريف ميشه؟؟:عصبانی++:

PC2st
پنج شنبه 07 خرداد 1388, 12:08 عصر
نداره، بجاش از int (یا سایر انواع عددی صحیح) استفاده می‌کنند. صفر همون غلط و ۱ هم درست.

حامد مصافی
پنج شنبه 07 خرداد 1388, 12:31 عصر
زبان استاندارد ++C نوعی با نام bool دارد که معادل بولین در سایر زبان هاست. ماکرو های قابل قبول برای این نوع TRUE و FALSE هستند. شما این نوع را خواهید داشت مگر اینکه از یک کامپایلر غیر استاندارد یا قدیمی استفاده کنید.
برای تست این موضوع می توانید از خطوط زیر استفاده کنید:


#if !defined(__BOOL_DEFINED)
printf_s("bool is not supported\n");
#elif defined(__BOOL_DEFINED)
printf_s("bool is supported\n");
#endif

tdkhakpur
پنج شنبه 07 خرداد 1388, 12:39 عصر
سلام
بصورت زیر تعریق کن


bool n;

در فوق n از نوع بولین هست

PC2st
پنج شنبه 07 خرداد 1388, 13:02 عصر
البته ایشون برای زبان C خواسته... تو C نوع bool نداریم.

!EHSAN!
پنج شنبه 07 خرداد 1388, 18:12 عصر
از enum ها استفاده کن و خودت بساز یک enum بولین


enum bool
{
true,
false
};

tdkhakpur
پنج شنبه 07 خرداد 1388, 19:39 عصر
البته ایشون برای زبان C خواسته... تو C نوع bool نداریم.
عجب :متعجب:

Nima_NF
جمعه 08 خرداد 1388, 02:03 صبح
عجب :متعجب:
نمی دانم این عجب برای چه بود، در هر حال جناب PC2st.ir (http://barnamenevis.org/forum/member.php?u=30917) تقریبا درست پاسخ دادند.

نوع داده ای bool در زبان C در استاندارد C99 اضافه شده است، این استاندارد هم تا کنون چندان پشتیبانی نشده و در اکثر کامپایلرها پیاده سازی نشده است (از جمله ++visual C) پس تقریبا می توان گفت در اکثر کامپایلرهای تحت C وجود ندارد. ، اگر هم کامپایلری C99 را پیاده سازی کرده باشند bool در هدر فایل stdbool.h قرار دارد.

اما bool در ++C سال ها هست که جز استاندارد آن شده است (حدودا بعد از 1995) و در همه کامپایلرهای بعد از این تاریخ پشتیبانی می شود. لذا در نسخه های قدیمی ++Turbo C نیز وجود ندارد.

pswin.pooya
جمعه 08 خرداد 1388, 02:19 صبح
نمی دانم این عجب برای چه بود، در هر حال جناب PC2st.ir (http://barnamenevis.org/forum/member.php?u=30917) تقریبا درست پاسخ دادند.

نوع داده ای bool در زبان C در استاندارد C99 اضافه شده است، این استاندارد هم تا کنون چندان پشتیبانی نشده و در اکثر کامپایلرها پیاده سازی نشده است (از جمله ++visual C) پس تقریبا می توان گفت در اکثر کامپایلرهای تحت C وجود ندارد. ، اگر هم کامپایلری C99 را پیاده سازی کرده باشند bool در هدر فایل stdbool.h قرار دارد.


VC++ که کامپایلز c++ هست و از bool پشتیبانی میکنه. اما حق با شماست نوع داده بولی از c99 یعنی سال 1999 به بعد اضافه شده.

PC2st
جمعه 08 خرداد 1388, 12:16 عصر
ممنون نمیدونستم تو استاندارد C99 این نوع اضافه شده :لبخند:

کامپایلر VC++ نوع bool واسه زبان سی ندارد (بنا به دلایلی علاقه به پیاده سازی استاندارد c99 نداشته):
http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/08e6a3fd-58a3-43b2-ac86-ac4ddd747277/
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/d1f111dc-e87e-4b23-8163-7359c57be1e5/
http://msdn.microsoft.com/en-us/library/a86zba5c.aspx

واسه استفاده از نوع bool (و استاندارد c99) تو کامپایلر gcc باید پارامتر std=c99- یا std=gnu99- اضافه بشه.
http://gcc.gnu.org/c99status.html

tdkhakpur
جمعه 08 خرداد 1388, 14:15 عصر
سلام

اما bool در ++C سال ها هست که جز استاندارد آن شده است (حدودا بعد از 1995) و در همه کامپایلرهای بعد از این تاریخ پشتیبانی می شود. لذا در نسخه های قدیمی ++Turbo C نیز وجود ندارد.
آقای Nima NF تمام حرفهای شما درست ولی از زمانی که اسمبلی به دنیا اومده boolهم وجود داشته اما به یه نحو دیگر.
موفق باشید.

Nima_NF
جمعه 08 خرداد 1388, 16:44 عصر
VC++ که کامپایلز c++ هست و از bool پشتیبانی میکنه. اما حق با شماست نوع داده بولی از c99 یعنی سال 1999 به بعد اضافه شده.
کامپایلر ++Visual C در حالت پیش فرض برنامه ها را برای ++C کامپایل می کند، اگر می خواهید پروژه ای در حالت C کامپایل شود از منوی project به properties بروید و سپس در زیر شاخه C++/C گزینه Advance را انتخاب کنید. حال در قسمت Compile As در حالت پیش فرض Compile as C++ Code /TP فعال هست اگر آن را به Compile as C Code /TC تغییر دهید طبق استانداردهای C پروژه کامپایل می شود (ضمنا پسوند .C هم به جای .cpp فراموش نشود)

به این شکل دیگر نوع داده ای bool در برنامه ++VC تعریف شده نخواهد بود و خطا در یافت می کنید (طبق عدم پیاده سازی در C)، چون به گفته تیم فنی مایکروسافت "مشتریان C ،از ما تقاضای پیاده سازی بیشتر را نکرده اند"

اگر این موضوع را در بلاگ فنی ++VC و فروم مایکروسافت جستجو کنید می بینید که همچنان جمله فوق را گفته اند و حتی با آمدن Visual C++2010 باز هم قرار نیست C99 را برای ++Visual C برای زبان C پیاده سازی کنند. (دقت کنید که C99 برای زبان C هست، داده bool برای زبان ++C در کامپایلر ++C از VC++5 پیاده سازی شده بود)