2010-05-02 4 views
6

मैंने एक अनुक्रमित चर में पूरक मान असाइन किया है।यह सी प्रोग्राम नकारात्मक संख्या क्यों आउटपुट करता है?

फिर यह सी प्रोग्राम नकारात्मक संख्या क्यों आउटपुट करता है?

#include<stdio.h> 
#include<conio.h> 

int main() 
{ 
    unsigned int Value = 4;   /* 4 = 0000 0000 0000 0100 */ 
    unsigned int result = 0; 

    result = ~ Value;    /* -5 = 1111 1111 1111 1011 */ 

    printf("result = %d", result); /* -5    */ 

    getch(); 

    return 0; 
} 
+0

आपका प्रश्न होना चाहिए: "जब मैं इस कोड को संकलित करता हूं तो संकलक चेतावनी क्यों नहीं छोड़ता है?"। जवाब यह है: "कंपाइलर पर चेतावनियां चालू करें। (उदाहरण के लिए -वॉल)" –

उत्तर

14

%d फॉर्मेट स्पेसिफायर printf निर्देश देता है एक हस्ताक्षरित पूर्णांक के रूप में तर्क के इलाज के लिए। इसके बजाय %u का उपयोग करें।

4

ऐसा इसलिए है क्योंकि% d हस्ताक्षरित int प्रारूप प्लेसहोल्डर है, इसलिए यह परिवर्तित हो रहा है। हस्ताक्षर के लिए% यू का प्रयोग करें।