ऐतिहासिक रूप से BOOL
को के रूप में उपयोग किया गया था -0-= TRUE प्रकार। उदाहरण के लिए, एक संवाद प्रक्रिया ने BOOL
लौटा दिया, जिसमें बहुत सारी जानकारी हो सकती थी। नीचे हस्ताक्षर Microsoft's own documentation से है:
BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
हस्ताक्षर और समारोह परिणाम कई मुद्दों सम्मिश्रण, इसलिए in the modern API यह बजाय
INT_PTR CALLBACK DialogProc(
_In_ HWND hwndDlg,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
है यह फै़शनवाला घोषणा पुराने के साथ संगत रहने के लिए है। जिसका अर्थ है कि INT_PTR
और BOOL
समान आकार होना चाहिए। जिसका मतलब है कि 32-बिट प्रोग्रामिंग में, BOOL
32 बिट्स है।
सामान्यतः, BOOL
कोई मूल्य नहीं हो सकता है, न केवल 0 और 1, BOOL
से TRUE
की तुलना करना बहुत ही अजीब विचार है। और भले ही यह FALSE
के खिलाफ तुलना करने के लिए काम करता है, यह आम तौर पर भी खराब अभ्यास है क्योंकि यह आसानी से लोगों को इंप्रेशन दे सकता है कि TRUE
के विरुद्ध तुलना करना ठीक रहेगा। इसके अलावा, क्योंकि यह काफी अनावश्यक है।
वैसे, वहाँ Windows API में अधिक बूलियन प्रकार, विशेष रूप से VARIANT_BOOL
में जो 16 बिट और जहां तार्किक सही सब 1 bitpattern के रूप में प्रस्तुत किया जाता है, अर्थात -1
एक हस्ताक्षरित मूल्य है & hellip के रूप में ही होता है;
यह एक अतिरिक्त कारण है कि तार्किक FALSE या TRUE के साथ सीधे तुलना करना अच्छा विचार नहीं है।
स्रोत
2013-01-21 13:35:20
एक समय पर, 'बूल' कोई सी प्रकार नहीं था। देखें http://stackoverflow.com/questions/1608318/is-bool-a-native-c-type – dyp
ओमान मैं बहुत डम हूं मैं असली – y2k
के लिए असली डम हूं, मुझे पता था कि बुल बूल सी में जोड़ा गया था तो होल्डअप क्या है यहां – y2k