longऔर long intसमान हैं। तो long longऔर हैं long long int। दोनों ही मामलों में, intवैकल्पिक है।
दो सेटों के बीच के अंतर के रूप में, C ++ मानक प्रत्येक के लिए न्यूनतम सीमा को अनिवार्य करता है, और यह कमlong long से कम जितना विस्तृत है long।
मानक के नियंत्रक भाग (C ++ 11, लेकिन यह एक लंबे समय के लिए चारों ओर है) एक के लिए हैं 3.9.1 Fundamental types, खंड 2, (बाद का खंड, अहस्ताक्षरित अभिन्न प्रकारों के लिए समान नियम देता है):
पांच मानक हस्ताक्षरित पूर्णांक प्रकार हैं: हस्ताक्षरित चार, लघु इंट, इंट, लंबे इंट, और लंबे लंबे इंट। इस सूची में, प्रत्येक प्रकार कम से कम उतना भंडारण प्रदान करता है जितना कि सूची में आने से पहले।
इसमें एक तालिका 9 भी है 7.1.6.2 Simple type specifiers, जो वास्तविक प्रकारों को निर्दिष्ट करने वालों की "मैपिंग" दिखाती है (यह दिखाते हुए कि intयह वैकल्पिक है), जिसका एक खंड नीचे दिखाया गया है:
Specifier(s) Type
------------- -------------
long long int long long int
long long long long int
long int long int
long long int
विनिर्देशक और प्रकार के बीच अंतर पर ध्यान दें। विनिर्देशक यह है कि आप संकलक को यह बताएं कि प्रकार क्या है, लेकिन आप एक ही प्रकार के अंत में विभिन्न विनिर्देशक का उपयोग कर सकते हैं।
इसलिए longअपने आप में न तो एक प्रकार है और न ही एक संशोधक है जैसा कि आपका प्रश्न बताता है, यह केवल long intप्रकार के लिए एक निर्दिष्ट है । Ditto प्रकार के लिए long longएक विनिर्देशक होने के लिए long long int।
यद्यपि C ++ मानक स्वयं अभिन्न प्रकारों की न्यूनतम सीमाओं को निर्दिष्ट नहीं करता है, लेकिन यह C99 1.2 Normative referencesको लागू करने के रूप में उद्धृत करता है । इसलिए C99 5.2.4.2.1 Sizes of integer types <limits.h>लागू न्यूनतम सीमाएं लागू हैं।
के संदर्भ में long double, यह वास्तव में एक पूर्णांक के बजाय एक अस्थायी बिंदु मान है। अभिन्न प्रकारों के समान, इसके लिए कम से कम उतनी ही सटीकता की आवश्यकता होती है doubleऔर उस प्रकार से अधिक मान प्रदान करने के लिए ( कम से कम उन मानों का अर्थ है , आवश्यक नहीं है) अधिक मूल्य)।