2014-12-01 1 views
15

मैं इस अजीब वाक्य रचना पाया:एक पूर्णांक को "ए = {1,}" संकलित करने के तरीके को कैसे प्रारंभ करता है?

int a = {1,}; 

और यह सब compilers मैं कोशिश की है में काम करता है। यह संकलित कैसे करता है?

संपादित करें: मैंने सोचा था कि अदिश initializers केवल उस में एक तत्व हो सकता है, मेरे सवाल उत्पन्न करने वाला। सभी परेशानी के लिए खेद है।

+3

कृपया सभी को एक एहसान दें, और उस लाइन के लेखक को निर्दोष न होने दें। उसे पानी कूलर पर बुलाओ, एक समाचार पत्र खोलो, उसे मारो और कहो "नहीं! बुरा! बुरा प्रोग्रामर!" – DanielKO

+0

@DanielKO किस लाइन के? – user4309946

+1

आपके द्वारा पोस्ट की गई रेखा, 'int a = {1,};', आपने कहा कि आपको यह मिला है। यह कहने के लिए एक जीभ-गाल तरीका है कृपया इस तरह कोड कभी न लिखें, जब तक आप आईओसीसीसी के लिए सबमिशन नहीं बना रहे हों। – DanielKO

उत्तर

15

के रूप में टिप्पणी में मैट McNab ने कहा, एक braced प्रारंभ सूची की वाक्य रचना कि आप इसे प्रयोग कर रहे हैं एक अदिश या कुछ और प्रारंभ करने की परवाह किए बिना एक ही है।

सी ++ 11 §5.17 राज्यों

एक braced-init-सूची

  • एक अदिश को एक काम के दाएँ हाथ की ओर पर प्रदर्शित हो सकता है, इस स्थिति प्रारंभकर्ता सूची में सबसे अधिक एक तत्व होगा।

braced-init-सूची की परिभाषा (से §8.5) है:

braced-init-list: 
    { initializer-list ,opt } 
    { }

जहां 'ऑप्ट' का मतलब है कि अनुगामी अल्पविराम वैकल्पिक है।

+0

N3337 एक मसौदा है, आईएसओ मानक नहीं। –

+0

हाँ मुझे यह पता है। यह केवल एकमात्र है जिसकी मुझे पहुंच है। मैंने इसे स्पष्ट करने के लिए कुछ हद तक अद्यतन किया। – harmic

+5

+++ 1 _this_ प्रश्न का बड़ा जवाब कुछ अन्य प्रश्न नहीं है। –

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