variadic functions - Weird output with varargs in C -
<पूर्व>
#include & lt; stdio.h & gt; # शामिल करें & lt; stdarg.h & gt; शून्य एफ (पूर्णांक पैरामीटर, ...) {va_list एपी; Int j; Va_start (एपी, पैरामीटर); के लिए (जे = पैरामीटर; J & gt; = 0; j = va_arg (एपी, इंट)) printf ("% d", j); va_end (एपी); printf ( "\ n"); } Int main () {f (1, 2, 3, 4); एफ (1, 2); च (1); } मैं यह कोड लिखता हूं, लेकिन उत्पादन बहुत अजीब है। मुझे कौन कारण बता सकता है आउटपुट:
esekilvxen245 [10:54 बजे] [/ home / elqstux / उपयोगी] - & gt; ./a.out 1 2 3 4 1748292352 1748370624 1 2 1748295184 1745597392 1 10 1748295184 1745597392
< p> लूप के लिए आपकी समाप्ति की स्थिति शून्य से कम होने के लिए j के लिए है, लेकिन आप अपने कॉल्स में नकारात्मक नंबर वाले तर्क सूची को समाप्त नहीं करते हैं। इसका अर्थ यह है कि जब तक यह एक ऋणात्मक संख्या नहीं पाता, तब तक लूप जारी रहेगा, जो आपके द्वारा पारित किए गए तर्कों से कहीं अधिक दूर स्टैक पर हो सकता है। इसे जैसे कॉल करें
f (1, 2, 3, 4, -1);
Comments
Post a Comment