C या C++ में, हम विभिन्न प्रकार की त्रुटियों का सामना करते हैं। इन त्रुटियों को पाँच विभिन्न प्रकारों में वर्गीकृत किया जा सकता है। ये नीचे की तरह हैं -
- सिंटैक्स त्रुटि
- रन-टाइम त्रुटि
- लिंकर त्रुटि
- तार्किक त्रुटि
- अर्थपूर्ण त्रुटि
आइए इन त्रुटियों को एक-एक करके देखें -
सिंटैक्स त्रुटि
इस प्रकार की त्रुटियाँ तब होती हैं, जब यह C++ लेखन तकनीकों या वाक्य-विन्यास के नियम का उल्लंघन करती हैं। इस प्रकार की त्रुटियां आमतौर पर संकलन से पहले संकलक द्वारा इंगित की जाती हैं। कभी-कभी इन्हें संकलन समय त्रुटि के रूप में जाना जाता है।
इस उदाहरण में, हम देखेंगे कि यदि हम एक पंक्ति के बाद अर्धविराम नहीं लगाते हैं तो सिंटैक्स त्रुटि कैसे प्राप्त करें।
उदाहरण
#include<stdio.h> main() { printf("Hello World") }
आउटपुट
Error] expected ';' before '}' token
रनटाइम त्रुटि
इस तरह की त्रुटियां तब होती हैं, जब प्रोग्राम निष्पादित हो रहा होता है। चूंकि यह संकलन त्रुटि नहीं है, इसलिए संकलन सफलतापूर्वक किया जाएगा। यदि हम किसी संख्या को 0 से विभाजित करने का प्रयास करते हैं तो हम इस त्रुटि की जांच कर सकते हैं।
उदाहरण
#include<stdio.h> main() { int x = 52; int y = 0; printf("Div : %f", x/y); }
आउटपुट
Program crashes during runtime.
लिंकर त्रुटि
इस तरह की त्रुटियां तब होती हैं, जब प्रोग्राम को सफलतापूर्वक संकलित किया जाता है, और विभिन्न ऑब्जेक्ट फ़ाइल को मुख्य ऑब्जेक्ट फ़ाइल से लिंक करने का प्रयास किया जाता है। जब यह त्रुटि होती है, तो निष्पादन योग्य उत्पन्न नहीं होता है, उदाहरण के लिए कुछ गलत फ़ंक्शन प्रोटोटाइप, गलत हेडर फ़ाइल आदि। यदि मुख्य () को मुख्य () के रूप में लिखा जाता है, तो यह लिंक की गई त्रुटि उत्पन्न करेगा।
उदाहरण
#include<stdio.h> main() { int x = 52; int y = 0; printf("Div : %f", x/y); }
आउटपुट
C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.cundefined reference to `WinMain'
तार्किक गड़बड़ी
कभी-कभी, हमें वांछित आउटपुट नहीं मिल सकता है। यदि वाक्य रचना और अन्य चीजें सही हैं, तो भी, हमें कुछ तार्किक मुद्दों के कारण सही आउटपुट नहीं मिल सकता है। इन्हें तार्किक त्रुटि कहा जाता है। कभी-कभी, हम लूप के बाद अर्धविराम लगाते हैं, जो वाक्य-रचना की दृष्टि से सही है, लेकिन एक खाली लूप बना देगा। उस स्थिति में, यह वांछित आउटपुट दिखाएगा।
उदाहरण
#include<stdio.h> main() { int i; for(i = 0; i<5; i++); { printf("Hello World"); } }
आउटपुट
Here we want the line will be printed five times. But only one time it will be printed for the block of code.
अर्थपूर्ण त्रुटि
इस प्रकार की त्रुटि तब होती है जब यह वाक्यात्मक रूप से सही होती है लेकिन इसका कोई अर्थ नहीं होता है। यह व्याकरण संबंधी गलतियों की तरह है। यदि असाइनमेंट ऑपरेटर के बाईं ओर कुछ एक्सप्रेशन दिया गया है, तो यह अर्थ संबंधी त्रुटि उत्पन्न कर सकता है।
उदाहरण
#include<stdio.h> main() { int x, y, z; x = 10; y = 20; x + y = z; }
आउटपुट
[Error] lvalue required as left operand of assignment