2012-01-31 32 views
7

सी ++ भाषा परिभाषा एक चार को बूल कास्टिंग करने के बारे में क्या वादा करता है फिर वापस फिर से कर देता है?बूल के माध्यम से चार राउंड-ट्रिप कास्ट का क्या होता है?

char original = 255; 
bool next = original; 
char final = next; 

इसके अलावा, इस मामले में भाषा की गारंटी के मुकाबले अधिकांश कंपाइलर क्या करते हैं?

उत्तर

13

यह मूल मान शून्य या गैर-शून्य के आधार पर शून्य या एक का मान देगा।

bool में कनवर्ट कर रहा true या false के एक मूल्य देता है:

4,12 एक शून्य मान, नल पॉइंटर मूल्य, या अशक्त सदस्य सूचक मूल्य false में बदल जाती है; कोई अन्य मूल्य true में परिवर्तित कर दिया गया है।

char वापस करने के लिए परिवर्तित शून्य करने के लिए false बदल देता है, और true एक करने के लिए:

4,7/4 तो स्रोत प्रकार bool है, मूल्य false शून्य और के लिए मूल्य true बदल जाती है बदल जाती है एक को।

3

इंटीग्रल मूल्यों या तो true या false (4.12) में bool परिणाम में बदल जाती है, और bool या तो 1 या 0 में अभिन्न मान परिणामों में बदला (4.5 (6))। अध्याय 4 (मानक रूपांतरण) देखें।

2

जब bool करने के लिए शून्य और शून्य परिवर्तित झूठी करने के लिए परिवर्तित कर रहे हैं, और बाकी सब कुछ सच में बदल जाती है। जब बूल झूठ से कनवर्ट करना शून्य में परिवर्तित हो जाता है और सत्य को एक में परिवर्तित किया जाता है।