यदि मैं मानक इनपुट स्ट्रीम में "हैलो वर्ल्ड" शब्द टाइप करता हूं, तो यह प्रोग्राम अपेक्षित "हैलो वर्ल्ड" के बजाय मानक आउटपुट में अजीब बॉक्स प्रतीकों को प्रिंट करेगा।पुचर() अजीब आउटपुट, यह क्यों हो रहा है?
#include <stdio.h>
int main(void)
{
// print out all characters from the stream until '/n' character is found
int ch;
while (ch = getchar() != '\n')
{
putchar(ch);
}
putchar('\n');
}
मुझे समस्या को ठीक करने के बारे में पता है। लेकिन कोड की यह पंक्ति गलत क्यों है? जैसे !=
असाइनमेंट (=
) की तुलना में अधिक पूर्वता है तुलना ऑपरेटरों -
while (ch = getchar() != '\n')
आप ऑपरेटर वैसे यहाँ precedences की एक सूची प्राप्त कर सकते हैं: //en.cp preference.com/w/c/language/operator_precedence। (थोड़ा सा मूर्खतापूर्ण जवाब मिला जो कि लाखों लोगों के साथ जवाब दे रहा था।: डी) – Ulfalizer
दिलचस्प, मुझे नहीं लगता था कि सी में ऑपरेटर प्राथमिकता सी # और जावा से अलग होगी। – zxgear
यदि आप इस विशेष मामले के बारे में सोच रहे हैं, तो यह जावा और सी # में समान लगता है। यह बुरा होगा यदि 'x_eq_y = x == y' को मूर्खतापूर्ण उदाहरण के रूप में '(x_eq_y = x) == y' के रूप में व्याख्या किया गया था। सी में कुछ भद्दा प्राथमिकताएं हैं (जिन्हें लेखकों द्वारा गलती के रूप में स्वीकार किया गया है, लेकिन अभी भी संगतता के लिए अन्य भाषाओं द्वारा अनुकरण किया गया है)। उदाहरण के लिए, 'x == y << z'' x == (y << z) 'जैसा ही आप अपेक्षा करते हैं, वही है, जबकि 'x == y और z'' (x = = वाई) और जेड'। – Ulfalizer