2010-01-15 14 views
8

क्या निम्न कोड यूबी का आह्वान करता है?क्या निम्न कोड यूबी का आह्वान करता है?

int main(){ 
    volatile int i = 0; 
    volatile int* p = &i; 
    int j = ++i * *p; 
} 
+4

@ प्र्रासून: इंडेंटेशन की अपनी पसंदीदा शैली के साथ अपने कोड को प्रारूपित करने के लिए दूसरों के पदों को संपादित करना सही नहीं है। क्या आपने स्टैक ओवरफ्लो दिशानिर्देशों को नहीं पढ़ा है - "मूल लेखक का सम्मान करें"? (> _ <) –

उत्तर

6

हाँ कि है अपरिभाषित व्यवहार क्योंकि आप दूसरे नियम का उल्लंघन करने के लिए कोशिश कर रहे हैं ..

स्टैंडर्ड से कहा गया है

1) पिछले और अगले अनुक्रम बिंदु के बीच एक वस्तु होगा कि अपनी संग्रहीत मूल्य अभिव्यक्ति के मूल्यांकन द्वारा सबसे अधिक बार संशोधित किया जाता है।

2) इसके अलावा, पूर्व मान केवल संग्रहीत करने के मान को निर्धारित करने के लिए उपयोग किया जाएगा।

नोट: * ऑपरेटर की ऑपरेंड के मूल्यांकन के क्रम अनिर्दिष्ट और *p लेकिन i कुछ भी नहीं है।

+0

आपका मतलब है '*' ऑपरेटर मुझे लगता है ... –

+0

हाँ टाइपो: पी ....... ने मेरी पोस्ट संपादित की :) –

+1

@P्रासून: अपने कोड को अपने पसंदीदा प्रारूप के साथ प्रारूपित करने के लिए दूसरों की पोस्ट को संपादित करने का अधिकार नहीं है इंडेंटेशन की शैली। क्या आपने स्टैक ओवरफ्लो दिशानिर्देशों को नहीं पढ़ा है - "मूल लेखक का सम्मान करें"? (> _ <) –

9

हां - या तो ++ i या * p (जो है I) का मूल्यांकन पहले किया जा सकता है।

+0

लेकिन मूल्यांकन के आदेश के बावजूद परिणाम एक ही सही होगा? –

+1

नहीं। यदि ++ का मूल्यांकन पहले किया जाता है, तो आपके पास 1 * 1. है। यदि * पी का मूल्यांकन पहले किया गया है, तो आपके पास 1 * 0. –

+0

ओह! मैं उसे कैसे देख सकता था! प्रतिक्रिया के लिए धन्यवाद! –

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