2017-11-30 9 views
6

क्या 0 स्ट्रिंग स्थिरांक "foo" "\x01" "bar" को एक स्ट्रिंग अक्षर के रूप में लिखा जा सकता है (हेक्साडेसिमल नोटेशन को रखते हुए)? "foo\x01bar" के साथ बचने के अनुक्रम को \x01ba के रूप में व्याख्या किया जा रहा है क्योंकि मुझे चेतावनी मिलती है "सीमा से बाहर हेक्स भागने अनुक्रम।"स्ट्रिंग्स में हेक्साडेसिमल एस्केप दृश्यों को अलग करना

उत्तर

3

"foo" "\x01" "bar" एक स्ट्रिंग अक्षर है।

सी मानक बताता है कि एक हेक्साडेसिमल भागने अनुक्रम वर्णों का सबसे लंबा अनुक्रम है जो बचने के अनुक्रम का गठन कर सकता है। स्पष्ट संगतता के बिना (जो इस समस्या का सामान्य कामकाज है), कंपाइलर \x01ba पार करता है जो स्पष्ट रूप से सीमा से बाहर है।

+0

शायद "परमाणु" स्ट्रिंग शाब्दिक एक बेहतर वर्णन है हेक्साडेसिमल

"foo\1bar" 

और कोई और अधिक अस्पष्टता के बजाय, बस अष्टाधारी में भाग निकले चरित्र लिखने के लिए है ...। –

+0

@AugustKarlstrom: दुर्भाग्यवश एक हेक्साडेसिमल-एस्केप-अनुक्रम * परिभाषित * है \ n' के बाद निम्नलिखित हेक्साडेसिमल अंकों की संख्या के रूप में। इसके विपरीत, एक * ऑक्टल * -स्केप-अनुक्रम ('001') तीन अंडाकार अंकों (* 6.4.4.4 वर्ण स्थिरांक *) से अधिक नहीं चलता है। तो, नहीं, या तो आपको हेक्स नोटेशन के साथ "चाल चलाना" की आवश्यकता है, या आप ऑक्टल के लिए जाते हैं (जो * उस समय * बुरा नहीं होता है)। – DevSolar

1

कैसे "foo\x01\142ar"? क्या वह धोखा दे रहा है?

1

एक अन्य समाधान

+0

(और यदि "बार" एक संख्या है, तो 3 octal अंकों तक का उपयोग करें, जैसे '\ 001') –

संबंधित मुद्दे