कारण नहीं
सबसे पहले, यहां एक कारण है कि कोई अंडरस्कोर न लिखें या इसे अनुकरण करने के लिए किसी भी चाल का उपयोग न करें: यह कोड में खोजने के लिए स्थिरांक को कठिन बनाता है। मान लीजिए कि कुछ कार्यक्रम प्रदर्शित करता है, कहीं इसके संचालन में, कुछ पैरामीटर के लिए हार्ड-कोडित मूल्य 1500000। मैं जानना चाहता हूं कि कार्यक्रम के स्रोत कोड में यह वास्तव में कहां होता है, इसलिए मैं इसके लिए कोड तैयार करता हूं 1500000, और कुछ भी नहीं पाता हूं । क्यूं कर? यह हेक्साडेसिमल में हो सकता है (लेकिन ऐसे गोल दशमलव संख्या के लिए क्यों)। मेरे लिए अज्ञात, वास्तव में के रूप में लिखा है 1_500_000। मुझे रेगेक्स की जरूरत थी 1_?500_?000।
टिप्पणी में मार्गदर्शक चरित्र
सिर्फ इसलिए कि एक प्रकार की दृश्य सहायता उपलब्ध नहीं है, या हम इसे उपरोक्त कारण के लिए उपयोग नहीं करना चाहते हैं, इसका मतलब यह नहीं है कि हम वैकल्पिक दृश्य सहायता बनाने के लिए पाठ फ़ाइल के दो आयामों का लाभ नहीं उठा सकते हैं:
foo = bar / 1000000000;
// --^--^--^
इससे हम खुद को आसानी से समझा सकते हैं कि तीन शून्य के तीन समूह हैं। फिर भी, हम अभी भी स्रोत कोड को 1000000000खोज सकते हैं और पा सकते हैं।
सिंटेक्स रंग
प्रोग्रामेबल सिंटैक्स रंग के साथ एक टेक्स्ट एडिटर को बेहतर पठनीयता के लिए वैकल्पिक रंगों के साथ संख्यात्मक स्थिरांक में समूह समूहों को रंगीन करने के लिए बनाया जा सकता है। हमें कोड में कुछ भी करने की आवश्यकता नहीं है।
प्रीप्रोसेसिंग: सी, सी ++, ऑब्जेक्टिव सी
अब, यदि हम वास्तव में अंकों के बीच कुछ अल्पविराम चाहते हैं, तो C और C ++ में हम कुछ प्रीप्रोसेसिंग का उपयोग कर सकते हैं:
/* Four digit base TH-ousand constant macro */
/* Condensed using Horner's rule */
#define TH(A,B,C,D) ((((((A) * 1000) + (B)) * 1000) + (C)) * 1000 + D)
tv_sec = nanoseconds / TH(1,000,000,000)
जैसी संख्याओं के लिए काम करता है TH(1,234,567,890)।
TH के समान एक मैक्रो भी अंकगणित के बजाय टोकन चिपकाने के साथ काम कर सकता है। सी प्रीप्रोसेसर में, बाइनरी ##ऑपरेटर ("टोकन पेस्ट") को एक ही टोकन में दो ऑपरेंड को एक साथ चिपकाने के लिए मैक्रो बॉडी में इस्तेमाल किया जा सकता है। एक या दोनों ऑपरेंड मैक्रो तर्क हो सकते हैं। यहाँ नकारात्मक पक्ष (हमारे लिए जोखिम पैदा करना) यह है कि यदि परिणामी catenation एक वैध टोकन नहीं है, तो व्यवहार अपरिभाषित है।
#define TOK4(A, B, C, D) A ## B ## C ## D
अभी व
TOK4(1,000,000,000) /* produces the single token 1000000000 */
TOK4(1,123,000,000.0E+2) /* produces the single token 1123000000.0E+2 */
TOK4(pr,in,t,f) /* produces the token printf */
TOK4(#,*,a,b) /* undefined behavior, #*ab is not valid token syntax */
सी प्रोग्राम जो पहचानकर्ताओं को एक साथ चिपकाते हैं और परिणामों का उपयोग वैश्विक चर और कार्यों को नाम देने के लिए मौजूद हैं और उनके साथ काम करने के लिए भयानक हैं क्योंकि वे GNU आईडी-बर्तन और ctags जैसे उपकरणों के लिए अभेद्य हैं।