केवल एक उदाहरण है जहां आप signed
कीवर्ड का उपयोग करना चाह सकते हैं। signed char
हमेशा "सादा" char
से एक अलग प्रकार है, जो कार्यान्वयन के आधार पर एक हस्ताक्षरित या हस्ताक्षरित प्रकार हो सकता है।
सी ++ 14 3.9.1/1 का कहना है:
यह कार्यान्वयन से परिभाषित एक char
वस्तु नकारात्मक मान हो सकते हैं या नहीं। अक्षरों को स्पष्ट रूप से unsigned
या signed
घोषित किया जा सकता है। सादा char
, signed char
, और unsigned char
तीन अलग प्रकार [...]
अन्य संदर्भों में signed
बेमानी है।
सी ++ 14, (और सी में) से पहले, दूसरा उदाहरण था: बिट-फ़ील्ड। यह कार्यान्वयन-परिभाषित किया गया था कि, उदाहरण के लिए, int x:2;
(कक्षा की घोषणा में) unsigned int x:2;
या signed int x:2
जैसा ही है।
सी ++ 11 9.6/3 ने कहा:
यह कार्यान्वयन परिभाषित किया गया है कि क्या एक सादे (न तो स्पष्ट रूप से हस्ताक्षर किए और न ही अहस्ताक्षरित) char
, short
, int
, long
, या long long
सा मैदान हस्ताक्षरित किया गया है या अहस्ताक्षरित।
हालांकि, सी ++ 14 के बाद से इस ताकि int x:2;
हमेशा signed int
का मतलब बदल दिया गया है।Link to discussion
स्रोत
2015-01-18 18:03:32
लगभग कभी नहीं। यह निहित है। एक संभावित अपवाद 'हस्ताक्षरित चार' है; मानक निर्दिष्ट नहीं करता है कि क्या सादा 'char' हस्ताक्षरित है या हस्ताक्षरित है, इसलिए यदि किसी कारण से आप विशेष रूप से एक हस्ताक्षरित चार चाहते हैं, तो आपको स्पष्ट रूप से कहना होगा। –
मैं यह दिखाने के लिए इसका उपयोग करता हूं कि संख्या स्पष्ट रूप से हस्ताक्षरित है, पाठक को अनुस्मारक के अधिक। –
@IgorTandetnik इससे भी अधिक, 'char',' पर हस्ताक्षर किए char' और 'अहस्ताक्षरित char' * तीन * अलग प्रकार के होते हैं। अन्य सभी अभिन्न प्रकारों के लिए, 'एक्स' और' हस्ताक्षरित एक्स' समान हैं। – Angew