PDA

View Full Version : bool



بانوی ایران
شنبه 19 تیر 1389, 00:55 صبح
سلام به دوستان عزيز
يك سوال داشتم
اين دستور

bool digit-seen[10]={false};
چي كار ميكنه مقادير ارايه رو صفر ميكنه؟
من وقتي از اين دستور اسفتاده ميكنم اين ارور رو ميده
expected primary-expression before"bool"
چي كار كنم كه درست شه؟
البته توي توضيحات كتاب گفته ميشه به جاي boolاگر كامپايلرتون نميخونتش ازtypedef int bool استفاده كنيد حالا سوال اينجاستفرق boolباintچيه؟

PC2st
شنبه 19 تیر 1389, 01:24 صبح
کامپایلرهای قدیمی C از نوع bool پشتیبانی نمی‌کنند. در واقع نوع bool جزء زبان C نبود و بعدا به این زبان اضافه شد. در زبان C نوع bool تقریبا مثل unsigned int عمل می‌کنه ولی در ++C یک نوع کاملا مجزا و built-in است.


چي كار ميكنه مقادير ارايه رو صفر ميكنه؟
وقتی که فقط اولین عضو آرایه به false مقداردهی می‌کنید در حقیقت سایر اعضا مقداردهی نشده توسط شما... پس کامپایلر آنها را با مقدار پیش‌فرض مقداردهی می‌کند که مقدار پیش‌فرض bool برابر false و مقدار پیش‌فرض عدد همان صفر و مقدار پیش‌فرض کاراکتر هم «کاراکتر تهی» است.

برای حل مشکل یا از کامپایلر جدیدتر استفاده کنید یا اینکه نوع bool را تعریف کنید.

بانوی ایران
شنبه 19 تیر 1389, 01:59 صبح
اخه وقتي نميفهمه undecladred ميزنه
اين ارور primary expression ميخواد
مشكل پشتيباني نشدن توسط كامپايلره؟

Salar Ashgi
شنبه 19 تیر 1389, 10:37 صبح
bool digit-seen[10]={false};


اصلا این دستور شما جهت انجام چه کاری است ؟ زیاد مفهوم خاصی نداره .

همانطور PC2st (http://www.barnamenevis.org/forum/member.php?u=30917) ذکر کردن ، در زبان C اولیه نوع داده ای bool وجود نداشت و بجای True , False بودن

از 0 و 1 بودن یک متغیر int استفاده میکردند .

PC2st
شنبه 19 تیر 1389, 17:33 عصر
همانطور که salar_cpp_cs گفتند و من هم حواسم نبود، در نام متغیر نباید علامت - به کار گرفته بشه، به جای digit-seen از digit_seen استفاده کنید و در نهایت:

bool digit_seen[10]={false};
اگر باز هم کامپایل نشد، به جای آن اینطور بنویسید:

unsigned int digit_seen[10]={0};
یا:


typedef unsigned int BOOL;
#define TRUE 1
#define FALSE 0
BOOL digit_seen[10]={FALSE};

بانوی ایران
یک شنبه 20 تیر 1389, 01:28 صبح
ممنون درست شد من اشتباه كرده بودم و نميدونستم در نام يك متغير نبايد از-استفاده كرد
مشكل از اون بود و اين دستور هم مقادير ارايه رو صفر ميكنه
ولي هنوزم من نميدونم چرا از bool استفاده ميشه وفتي همون unsigned int هست چرا بايد از bool استفاده كرد؟

PC2st
یک شنبه 20 تیر 1389, 11:09 صبح
چون unsigned int دقیقا رفتار همان bool را ندارد.
بخصوص در زبان ++C اصلا نباید آنها را جایگزین یکدیگر دانست.