long long llIdx = foo();
if (llIdx > 0LL) // Can I use 0 here?
...
लंबे तुलना कर रहा है अगर मैं उपरोक्त कोड में 0
बजाय 0LL
का उपयोग करें?कोई समस्या के साथ 0
मुझे 0
से अधिक कब चाहिए?
long long llIdx = foo();
if (llIdx > 0LL) // Can I use 0 here?
...
लंबे तुलना कर रहा है अगर मैं उपरोक्त कोड में 0
बजाय 0LL
का उपयोग करें?कोई समस्या के साथ 0
मुझे 0
से अधिक कब चाहिए?
हां, आप यहां एक सादा 0
का उपयोग कर सकते हैं। कंपाइलर प्रत्येक तर्क के प्रकार को >
पर देखेगा और छोटे को बढ़ावा देगा ताकि वे एक ही आकार के हों।
इस प्रकार llIdx > 0
और llIdx > 0LL
समकक्ष हैं।
"कंपाइलर प्रत्येक तर्क के प्रकार को'> 'पर देखेगा और छोटे को बढ़ावा देगा ताकि वे एक ही आकार के हों।" यही कारण है कि मैंने अपनी टिप्पणी को उत्तर के रूप में नहीं रखा। यदि दोनों पूर्णांक का संकेत भिन्न होता है तो विशेष मामलों का एक गुच्छा होता है। – kay
लिखते समय आपकी टिप्पणी नहीं देखी गई :) मैं बस "हाँ" से थोड़ा अधिक विशिष्ट प्रश्न का उत्तर देने का प्रयास कर रहा था। और मुझे लगता है कि आपका मतलब "हस्ताक्षर" था, न कि "साइन" – kdopen
तो जब हमें '0' के बजाय' 0LL' का उपयोग करना चाहिए? – Deqing
'लंबा लंबा' एक 'हस्ताक्षरित' प्रकार है। यदि आप 'x> 0ll' या 'x> 0' लिखते हैं, तो इससे कोई फर्क नहीं पड़ता है, क्योंकि' 0' स्वचालित रूप से' लंबे समय तक 'तक प्रचारित होता है। – kay
http://stackoverflow.com/questions/13275136/which-initializer-is-appuous-for-an-int64-t –
दरअसल, 'लंबे समय तक' हस्ताक्षर "इस विशिष्ट मामले के लिए कोई फर्क नहीं पड़ता। यदि तुलना 'llIdx> = 0' (या' 0LL') थी, तो यह होगा, क्योंकि यह अनुमान हमेशा 'हस्ताक्षरित लंबे समय तक' के लिए सच होगा। – kdopen