2013-09-04 13 views
10

हाल ही में मैं निम्नलिखित कोड का उपयोग करने की कोशिश कर रहा था:यह वाक्यविन्यास त्रुटि "= +" नहीं होनी चाहिए?

int number = 4; 
number += other_variable;//2 
... 
printf("Number:%d\n",number);//-->6 

लेकिन मुझे एक त्रुटि टाइपिंग था और बजाय मैं इस कोड मिल गया है:

int number = 4; 
number =+ other_variable;//2 
... 
printf("Number:%d\n",number);//-->2 

जाहिर है इस gcc 4.7.3 और gcc 4.4.3 और साथ संकलित परिणाम एक सामान्य असाइनमेंट ऑपरेटर के रूप में था। प्रश्न है: यह एक वाक्यविन्यास त्रुटि नहीं होनी चाहिए?

+9

डाउनवॉट्स और अंक थोड़ा कठोर हैं। ओपी को नहीं पता था कि यह एक यूनरी प्लस ऑपरेटर था। –

+8

वे थोड़ा कठोर नहीं हैं, वे गलत हैं। – fiscblog

+1

और बीटीडब्ल्यू मैं नहीं देखता कि 'यूनरी प्लस ऑपरेटर क्या करता है' का डुप्लिकेट किया गया है? – KiaMorot

उत्तर

12

नहीं इस के रूप में पार्स किया जा रहा है। आप इसे =+ के रूप में पढ़ रहे हैं लेकिन यह दो अलग ऑपरेटरों, = और + है।

4

नहीं, यह सिर्फ एक शून्य सेशन है।

number = +other_variable; 
number = 0 + other_variable; 

इन आपरेशनों, जो नकारना के पूरक के रूप में: -:

number = +other_variable; 

अर्थात आपको काम और एक एकल + ऑपरेटर है

number =- other_variable; 
number = -other_variable; 
number = 0 - other_variable; 
+1

-1, यह निश्चित रूप से यह नहीं कर रहा है कि यह क्या कर रहा है, यह अपने ऑपरेंड के पूर्ण मूल्य की गणना नहीं कर रहा है। – unwind

+1

@unwind बस मुझसे खराब शब्द, मेरा मतलब यह नहीं बदल गया कि यह संकेत बदल गया। – user2586804

+0

@molbdnilo बस मुझ से खराब शब्द, मेरा मतलब '+' बदल गया संकेत नहीं था या '-' ने नकारात्मक संकेत को मजबूर किया। – user2586804

0

नहीं, यह एक वाक्यविन्यास त्रुटि नहीं है।

यह a=-b; के समान समान है - आप a=+b; भी कर सकते हैं। इसका ऐसा कोई प्रभाव नहीं पड़ता है (अंतर्निर्मित प्रकारों के लिए, ऑब्जेक्ट्स जिन्हें आपने परिभाषित किया है, निश्चित रूप से यहां कुछ फंकी कर सकते हैं), लेकिन यह पूरी तरह से मान्य सी कोड है।

1

नहीं, वे दो अलग ऑपरेटरों हैं।

number = (+other_variable);

एकल + ऑपरेटर जब एक बुनियादी डेटा प्रकार के लिए लागू किया, जहाँ तक मुझे पता है, मूल मान के अलावा और कुछ नहीं करता है। हालांकि इसे अधिभारित किया जा सकता है।

यह यूनरी ऑपरेटर का समकक्ष है, जो संकेत को बदल देता है।

number = (-other_variable);

संबंधित मुद्दे