जबकि (curr_data [1]! = (अहस्ताक्षरित int) NULL & amp; ((curr_ptr = (शून्य *) Curr_data [1]) 1))
दो भाग प्रश्न।
क्या होगा (curr_ptr = (शून्य *) curr_data [1] )
मूल्यांकन, तार्किक रूप से TRUE
?
इसके अलावा, मैं इसके बजाय हैक-आईश जानता हूं, लेकिन जबकि
स्टेटमेंट कानूनी सी है? मुझे कोड में कहीं और असाइनमेंट डाल देने के लिए महान contortions के माध्यम से जाना होगा, तो मैं वास्तव में अच्छा होगा अगर मैं इसे वहाँ छोड़ सकता है, लेकिन अगर यह इतना बड़ा है कि यह हर किसी की आंखों में लपटों में फट जाएगा, मैं इसे बदल दूँगा ।
अपने प्रश्नों का उत्तर देने के लिए:
- यह सच का मूल्यांकन करेगा अगर
curr_ptr
कोNULL
पर सेट नहीं किया गया है (अर्थातcurr_data [1]
नहीं है 0)। - मुझे विश्वास है यह कानूनी है, लेकिन इस लाइन की कोड के साथ बड़ी समस्याएं हैं।
फिर भी, मैं मान रहा हूँ कि आपने यह कोड नहीं लिखा है, क्योंकि आप इसे बनाम छोड़ने के बारे में बहस कर रहे हैं। इसे बाहर ले जा रहा है तो मैं चाहता हूं कि आप यह पता करें कि कोड की यह रेखा किसने लिखा है और उन्हें भारी कुंद वस्तु में पेश किया है।
-
(अहस्ताक्षरित int) NULL
हास्यास्पद है आप ऐसा क्यों करेंगे? यह संभवतः0
लिखने के समान ही होगा (सुनिश्चित नहीं है कि यह मानक द्वारा गारंटीकृत है)। -
curr_data [1] में किस तरह का डेटा है? कोड> यदि इसे एक सूचक में डाला जा रहा है (और संकेतक इसे डाली जा रहे हैं)? यदि यह एक अभिन्न प्रकार के रूप में एक संकेतक धारण करना माना जाता है, तो आपको
intptr_t
याuintptr_t
& lt; stdint.h & gt;
में दी गई प्रकार का उपयोग करना चाहिए उस प्रयोजन के लिए (यदि आप संकलक हैं तो C99ptrdiff_t
को स्वीकार्य विकल्प नहीं हो सकता है)। -
|| 1
अंत में बेमानी हो रहा है यदिcurr_ptr = (शून्य *) curr_data [1]
झूठी मूल्यांकन किया गया होता, तो हम इसे पहले शर्त में पकड़े होते।
यह एक दर्द हो सकता है गधा में, लेकिन इस पंक्ति को फिर से लिखने पर गंभीरता से पुनर्विचार। यह IOCCC में एक प्रविष्टि की तरह दिखता है।
No comments:
Post a Comment