#include<stdio.h>
int main()
{
int i, j;
int *pi,*pj;
pi=&i;
pj=&j;
printf("pi-pj=%d\n",pi-pj);
return 0;
}
मैंने इस कोड को विभिन्न कंपाइलरों पर करने की कोशिश की, लेकिन हर बार मुझे एक ही परिणाम मिल रहा है, क्या कोई मुझे समझने में मदद कर सकता है कि यह वही क्यों है?इस सी कोड का आउटपुट
ouput:
pi -pj = 3
मैं, उलझन में हूँ के रूप में स्मृति सामान्य रूप से समीपवर्ती आवंटित किये जायेंगे। तो, अगर मान लें, तो हमारा सिस्टम स्टैक नीचे बढ़ रहा है और हमारे पास &i = 0xA
है, तो j(&j) = 0x6
का पता (क्योंकि पूर्णांक 4 बाइट्स हैं)। अब जब हम इन दो int
पॉइंटर मानों के बीच अंतर प्रिंट कर रहे हैं, आउटपुट "1"
होना चाहिए। लेकिन यह "3"
के रूप में आ रहा है। ऐसा क्यों है?
स्टैक ओवरफ़्लो में आपका स्वागत है! आप क्या आउटपुट प्राप्त कर रहे हैं? आपने क्या उम्मीद किया? यदि आप इस सवाल के बारे में अधिक सटीक हैं, तो हम बेहतर प्रतिक्रिया दे सकते हैं। साथ ही, क्या यह एक होमवर्क सवाल है? यदि ऐसा है, तो आपको इसे इस तरह टैग करना चाहिए। – templatetypedef
विभिन्न कंपेलरों से एक ही परिणाम प्राप्त करना एक समस्या है। अरे नहीं! मेरे सभी कार्यक्रम सही ढंग से काम नहीं करते हैं। – tjm
क्षमा करें, असुविधा के कारण, मैंने अपनी क्वेरी संपादित की है, समस्या विवरण पर बहस के लिए धन्यवाद। – Learner