language-lawyer पर टैग किए गए जवाब

प्रोग्रामिंग भाषाओं और वातावरणों की औपचारिक या आधिकारिक विशिष्टताओं की जटिलताओं के बारे में प्रश्नों के लिए।

6
क्या यह संकलक के लिए एक स्थानीय अस्थिर चर को अनुकूलित करने की अनुमति है?
कंपाइलर को इसे ऑप्टिमाइज़ करने की अनुमति है (C ++ 17 मानक के अनुसार): int fn() { volatile int x = 0; return x; } इसके लिए? int fn() { return 0; } यदि हाँ, तो क्यों? यदि नहीं, तो क्यों नहीं? इस विषय के बारे में कुछ सोच रहे …

7
क्या मैं 0 के मूल्य के प्रतिस्थापन के रूप में NULL का उपयोग कर सकता हूं?
क्या मैंने NULLसूचक को प्रतिस्थापन के रूप में उपयोग करने की अनुमति दी है 0? या ऐसा करने में कुछ गलत है? जैसे उदहारण के लिए: int i = NULL; के लिए प्रतिस्थापन के रूप में: int i = 0; प्रयोग के रूप में मैंने निम्नलिखित कोड संकलित किया: #include …

5
सी में सरणी सूचकांकों (बनाम अभिव्यक्ति) के मूल्यांकन का क्रम
इस कोड को देखकर: static int global_var = 0; int update_three(int val) { global_var = val; return 3; } int main() { int arr[5]; arr[global_var] = update_three(2); } कौन सी सरणी प्रविष्टि अपडेट की जाती है? 0 या 2? क्या सी के विनिर्देश में एक हिस्सा है जो इस विशेष …

3
std :: वेक्टर (ab) स्वचालित भंडारण का उपयोग करता है
निम्नलिखित स्निपेट पर विचार करें: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } जाहिर है कि यह अधिकांश प्लेटफार्मों पर दुर्घटनाग्रस्त होगा, क्योंकि डिफ़ॉल्ट स्टैक का आकार आमतौर पर 20 एमबी से कम होता है। अब निम्नलिखित कोड पर विचार करें: #include <array> #include <vector> …


3
C ++ घोषणापत्र और कोष्ठक - क्यों?
पहले इस विषय पर चर्चा की गई थी , लेकिन यह कोई नकल नहीं है। जब कोई decltype(a)और के बीच के अंतर के बारे में पूछता है decltype((a)), तो सामान्य उत्तर है - aएक चर है, (a)एक अभिव्यक्ति है। मुझे यह उत्तर असंतोषजनक लगता है। पहला, aएक अभिव्यक्ति है। प्राथमिक …

6
2 बाइट्स को हस्ताक्षरित 16-बिट पूर्णांक में बदलने का सही तरीका क्या है?
में इस सवाल का जवाब , zwol इस दावे किए गए: बाहरी स्रोत से डेटा के दो बाइट्स को 16-बिट हस्ताक्षरित पूर्णांक में बदलने का सही तरीका इस तरह सहायक कार्यों के साथ है: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | (((uint32_t)data[1]) …

2
क्यों std :: hash नियतात्मक होने की गारंटी नहीं है?
इसके बाद, हम N4140 (C ++ 14 स्टैंडर्ड) का उपयोग करते हैं। के अनुसार 17.6.3.4 हैश आवश्यकताओं § , लौटाया गया मान केवल k कार्यक्रम की अवधि के लिए तर्क पर निर्भर करेगा । [नोट: इस प्रकार कार्यक्रम के दिए गए निष्पादन के लिए समान परिणाम प्राप्त करने के लिए …

2
C का BNF व्याकरण init- घोषणाकर्ताओं के खाली अनुक्रम के साथ घोषणाओं की अनुमति क्यों देता है?
जब सी के बीएनएफ व्याकरण के माध्यम से देखते हैं, तो मुझे लगा कि यह अजीब था कि एक घोषणा के लिए उत्पादन नियम इस तरह दिखता था ( https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06 के अनुसार )% 20syntax%20of% 20C% 20in% 20Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; एक *क्वांटिफायर (शून्य या अधिक घटनाओं …

1
क्‍लास बग - क्‍लास बग - क्‍लास अपनी निजी स्‍टैटिक कॉन्‍स्‍टेक्‍ट पद्धति का उपयोग नहीं कर सकता है?
यह कोड क्लैंग (6,7,8,9, ट्रंक) में संकलित नहीं है, लेकिन जीसीसी (7.1, 8.1, 9.1) में ठीक संकलित करता है: template<class T> struct TypeHolder { using type = T; }; template<int i> class Outer { private: template<class T> static constexpr auto compute_type() { if constexpr (i == 42) { return TypeHolder<bool>{}; …

2
2-डी सरणी को एलियास करते समय स्ट्रलेन का अप्रत्याशित अनुकूलन
यहाँ मेरा कोड है: #include <string.h> #include <stdio.h> typedef char BUF[8]; typedef struct { BUF b[23]; } S; S s; int main() { int n; memcpy(&s, "1234567812345678", 17); n = strlen((char *)&s.b) / sizeof(BUF); printf("%d\n", n); n = strlen((char *)&s) / sizeof(BUF); printf("%d\n", n); } किसी भी अनुकूलन स्तर के …

3
रूपांतरण ऑपरेटर का यह अधिभार क्यों चुना जाता है?
निम्नलिखित कोड पर विचार करें । struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } यहां दूसरा रूपांतरण ऑपरेटर को अधिभार संकल्प द्वारा चुना गया है। क्यों? जहां तक ​​मैं इसे समझता हूं, …

3
क्या कॉन्स्ट सन्दर्भ द्वारा डिफ़ॉल्ट तर्क का मान वापस करना ठीक है?
क्या नीचे दिए उदाहरणों में कॉन्स्ट सन्दर्भ द्वारा डिफ़ॉल्ट तर्क के मान को वापस करना ठीक है: https://coliru.stacked-crooked.com/a/ff76e060a007723b #include <string> const std::string& foo(const std::string& s = std::string("")) { return s; } int main() { const std::string& s1 = foo(); std::string s2 = foo(); const std::string& s3 = foo("s"); std::string s4 …

1
C में ओवरलैपिंग ऑब्जेक्ट्स के शब्दार्थ क्या हैं?
निम्नलिखित संरचना पर विचार करें: struct s { int a, b; }; आमतौर पर 1 , इस संरचना का आकार 8 और संरेखण 4 होगा। क्या होगा अगर हम दो struct sऑब्जेक्ट बनाते हैं (अधिक सटीक रूप से, हम आवंटित दो ऐसी वस्तुओं में लिखते हैं), दूसरा ऑब्जेक्ट पहले ओवरलैपिंग …

3
कंपाइलर को एक स्थानीय अस्थिर को निरंतर-गुना करने की अनुमति है?
इस सरल कोड पर विचार करें: void g(); void foo() { volatile bool x = false; if (x) g(); } https://godbolt.org/z/I2kBY7 आप संभावित कॉल को न तो देख सकते हैं gccऔर न ही clangऑप्टिमाइज़ कर सकते हैं g। यह मेरी समझ में सही है: अमूर्त मशीन यह मानने के लिए …

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.