2014-06-26 11 views
5

मैं हर जगह इसके उदाहरण देखा है:एक int अंकों में '0' जोड़ने क्यों एक char को रूपांतरण की अनुमति देता है?

int i = 2; 
char c = i + '0'; 
string s; 
s += char(i + '0'); 

हालांकि, मैं नहीं अभी तक क्यों जोड़ने शून्य रूपांतरण के लिए अनुमति देता है के लिए एक स्पष्टीकरण देखा है।

+0

'क्या है चार (i + '0'); सी ++ में? (* यह एक वास्तविक सवाल है। *) – this

+0

@ यह शीर्षकोडर पर संकलित करता है:/ – sgarza62

+2

@ यह, यह पूर्णांक 'i'' को पूर्णांक में प्रचारित '0' 'के साथ जोड़ा गया है, परिणाम' char' एक कार्यात्मक-शैली का कलाकार के साथ, जो सी-स्टाइल कास्ट जैसा ही करता है। – chris

उत्तर

6

यदि आप ASCII तालिका, asciitable देखते हैं, तो आप देखेंगे कि अंक 48 ('0' होने पर) शुरू होते हैं और 57 तक (9 'के लिए) जाते हैं। तो अंक के लिए वर्ण कोड प्राप्त करने के लिए, आप उस अंक को '0' के वर्ण कोड में जोड़ सकते हैं।

1

(char)(i+c) जहां c एक char है आप एक नया char (c की ascii मूल्य) + i के बराबर एक ascii मूल्य के साथ देता है। चूंकि अंक 0-9 के एसीआईआई मान अनुक्रमिक हैं, i+'0' आपको i से संबंधित चार देता है, जब तक i उपयुक्त सीमा में स्थित है।

संपादित करें: (i+c) एक int है, जैसा कि जारोड 42 ने बताया। शुद्धता बनाए रखने के लिए एक कलाकार जोड़ा गया।

2

यह एएससीआईआई मूल्यों पर आधारित है। 0 का ASCII मान जोड़ना 48 है जिसका मतलब 48 + 5 53 या ASCII 53 होगा जो 0 है।

Google ASCII और एक अच्छा चार्ट ढूंढें और इसका अध्ययन करें। एक बार जब आप प्रत्येक चार (चरित्र) के मानों को देखते हैं तो इसे समझना चाहिए।

3

'0' का पूर्णांक मान 48 है।

'0' + 1 = 49 = '1' 
'0' + 2 = 50 = '2' 

... 

'0' + 9 = 57 = '9' 

तो, आप उसके संगत चरित्र के लिए एक अंकों परिवर्तित, बस उसमें '0' जोड़ने चाहते थे।

3

i के रूप में यह खड़ा है जब एक चार में बदला अपनी ascii टोकन के अनुरूप होगा यहाँ तालिका देखें (इस मामले STX में): http://www.asciitable.com/

संख्या के लिए '0' जोड़कर आप प्रभावी रूप से यह सही ascii मूल्य बना रहे हैं ।

बेशक आप इस कोड के साथ एक मुद्दे पर बिल्कुल छूए हैं जो है यह तुरंत स्पष्ट नहीं है कि यह क्या करता है। इसके बजाय आप कुछ इस तरह कर रही है पर विचार करना चाहिए आप सी शैली उपयोग करना चाहते हैं: ग

itoa(i); 

या और भी बेहतर छड़ी ++:

std::stringstream ss; 
ss << i; 
ss.str(); //for strings 
ss.str().c_str(); // for c-style strings. 
संबंधित मुद्दे

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