निम्न की तरह कुछ के लिए परिभाषित व्यवहार क्या है?परिवर्तनीय नामक के रूप में नामित
#include <stdio.h>
typedef enum {
ENUM_VAL_1 = 1,
ENUM_VAL_2 = 2
} TEST_ENUM;
int main() {
TEST_ENUM testVar1 = ENUM_VAL_1;
TEST_ENUM ENUM_VAL_1 = ENUM_VAL_1;
TEST_ENUM testVar2 = ENUM_VAL_1;
printf("ENUM_VAL_1 = %u\n",ENUM_VAL_1);
printf("testVar1 = %u\n",testVar1);
printf("testVar2 = %u\n",testVar2);
return 0;
}
दोनों जीसीसी और MSVC compilers के साथ अपने परीक्षण से, इस के व्यवहार testVar1 गणन मान "ENUM_VAL_1" या 1. हालांकि करने के लिए बराबर का गठन किया जाएगा जो है, अगले स्टेटमेंट चर ENUM_VAL_1 सेट करने की कोशिश करेंगे अपने मूल्य के बराबर, जो वर्तमान में अनियमित और इस प्रकार कचरा है, वैरिएबल ENUM_VAL_1 को गणना मूल्य ENUM_VAL_1 के बराबर सेट करने के बजाय। फिर, ज़ाहिर है, testVar2 को वैरिएबल ENUM_VAL_1 के समान कचरा मूल्य भी मिलेगा।
सी मानकों के अनुसार इसका परिभाषित व्यवहार क्या है, या यह अनिर्धारित व्यवहार है? चाहे यह परिभाषित किया गया हो या नहीं, मैं अनुमान लगा रहा हूं कि अस्पष्टता के कारण कम से कम इस प्रकार का उदाहरण खराब अभ्यास है।
धन्यवाद!
आप शब्द प्रगणक के लिए शब्द गणना प्रतिस्थापन विषय के शीर्षक अद्यतन करना चाहिए। –