2013-07-17 6 views
6

मैं इस तरह कुछ सी कोड देखास्विच केस का यह वाक्यविन्यास सी में क्या मतलब है? पूर्णांक जांच = 10:

switch(check) { 
      case 1...9: printf("It is 2 to 9");break; 
      case 10: printf("It is 10");break; 
} 

इस case 1...9: क्या मतलब है? क्या यह मानकीकृत है?

+0

धन्यवाद आदमी, मैं मूल रूप से अनुमान लगा सकता हूं कि इसका क्या अर्थ है, लेकिन मुझे पुष्टि करने की आवश्यकता है और पता है कि यह मानक है या नहीं? – user2131316

+1

@ user2131316 जैसा कि मैंने नीचे उल्लेख किया है, आप एक विशिष्ट मानक –

उत्तर

7

यह एक जीएनयू सी एक्सटेंशन है जिसे केस रेंज कहा जाता है।

http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html

के रूप में दस्तावेज़ में बताया गया है, आप सीमा के निम्न और उच्च मूल्य के बीच रिक्त स्थान पर रखना होगा।

case 1 ... 9: 
    statement; 

के बराबर है:

case 1: 
case 2: 
case 3: 
case 4: 
case 5: 
case 6: 
case 7: 
case 8: 
case 9: 
    statement; 
+0

ठीक से जांचने के लिए 'gcc -std = c99 -pedantic' का उपयोग कर सकते हैं, धन्यवाद, लेकिन यह जीएनयू सी मानक सी है या क्या यह सी 99 द्वारा समर्थित है या क्या? – user2131316

+0

जहां तक ​​मैं कह सकता हूं '1 ... 9' एक वाक्यविन्यास त्रुटि है, वहां एक जगह होने की आवश्यकता है। –

+0

@ user2131316 जीएनयू सी सी नहीं है। यह सी – ouah

1

यह gcc extension है वे सबसे आसान तरीका आम तौर पर इस यह पता लगाने की साथ gcc कम से कम -pedantic तर्क का उपयोग करने के लिए है:

gcc -pedantic 

चेतावनी देगा:

warning: range expressions in switch statements are non-standard [-pedantic] 
,210

और यदि आप उदाहरण c99 के लिए, एक विशिष्ट मानक के खिलाफ जांच करने के लिए चाहता था, आप इस प्रकार कार्य करें:

gcc -std=c99 -pedantic 

इसके अलावा, यह सही नहीं है:

case 1...9: 

आप डॉट्स के बीच रिक्त स्थान की जरूरत है और संख्या:

case 1 ... 9: 

document में बताया गया है:

सावधान रहें: आसपास के स्थान लिखें ..., अन्यथा इसके लिए जब आप इसे पूर्णांक मानों के साथ उपयोग करते हैं तो इसे गलत तरीके से पार्स किया जा सकता है।

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