printf

2012-04-30 16 views
5

का उपयोग कर असंगतता मैं जीएनयू जीसीसी कंपाइलर के साथ कोड ब्लॉक का उपयोग कर रहा हूं। और मैं इस कोड को कोशिश कर रहा हूँprintf

int number,temp; 

printf("Enter a number :"); 
scanf("%d",&number); 
temp = sqrt(number); 
printf("\n%d",sqrt(number)); //print 987388755 -- > wrong result 
printf("\n%d",temp); //print 3 -- > write result 

return 0; 

और इस कोड में वहाँ इनपुट मूल्य 10 के लिए एक परिणाम है

987388755 
3 

क्या इस कोड में गलत क्या है?

+0

आप जीएनयू जीएनयू सी कंपाइलर का उपयोग कर रहे हैं? – tbert

उत्तर

10

sqrt एक डबल रिटर्न:

double sqrt(double x); 

आप की जरूरत है:

printf("\n%g",sqrt(number)); 
0

बदलें:

printf("\n%d",sqrt(number)); 

रहे हैं:

printf("\n%g",sqrt(number)); 

ध्यान दें कि sqrt()double देता है, int नहीं - आपके संकलक को इस बारे में आपको चेतावनी दी जानी चाहिए, जब तक आपके पास चेतावनियां सक्षम हों। जैसे gcc -Wall ... (और यदि आपके पास चेतावनी सक्षम नहीं है, तो अब इसकी आदत शुरू करने का समय है)।

6

printf() में गलत स्वरूप विनिर्देश का उपयोग Undefined Behaviour को आमंत्रित करता है। sqrt() डबल लौटाता है लेकिन आप %d का उपयोग करते हैं।