# अनिर्धारित व्यवहार और const — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-undefined-behavior

> C आपको क्या करने देता है — जब तक वह न रुके।

## कोई सुरक्षा जाल नहीं

C प्रोग्रामर पर पूरी तरह भरोसा करता है: यह ऐरे की सीमा नहीं जाँचता, वेरिएबल इनिशियलाइज़ नहीं करता, या पॉइंटर सत्यापित नहीं करता। इन नियमों को तोड़ना **अनिर्धारित व्यवहार** है — प्रोग्राम क्रैश हो सकता है, कचरा दे सकता है, या तब तक "ठीक" दिख सकता है जब तक वह न रुके।

## दो क्लासिक: ओवरफ़्लो और कचरा

दोनों बिना किसी त्रुटि के कंपाइल हो जाते हैं और चलते हुए भी "ठीक" लग सकते हैं — यही अनिर्धारित व्यवहार को खतरनाक बनाता है।

```c
int arr[5];
arr[5] = 99;       // buffer overflow: out of bounds

int x;
printf("%d\n", x); // uninitialised: prints garbage
```

## const एक वादा है

किसी पैरामीटर को `const` चिह्नित करना (जैसे `void print(const char *s)`) कंपाइलर और अन्य पाठकों दोनों को बताता है कि फंक्शन उसे नहीं बदलेगा — फिर कंपाइलर किसी भी गलती से हुए लेखन को अस्वीकार कर देता है।
