काउंटर-सी, पॉइंटर्स, ऑपरेटर-प्राथमिकता में वृद्धि करते समय अभिव्यक्ति का परिणाम अप्रयुक्त होता है

void insert(size_t node, queue_t* queue) {
*queue->count++;
queue->elements[++(*queue->rear)] = node;
}
void remve(queue_t* queue) {
*queue->front++;
*queue->count--;
}

मैं एक कतार और एक नोड पारित कर रहा हूं जिसे मैं जोड़ना चाहता हूंयह इन सहायक कार्यों में। हालांकि, सभी लाइनें जो वृद्धि को शामिल करती हैं, "अभिव्यक्ति परिणाम अप्रयुक्त" त्रुटि फेंकती हैं। मैं इस त्रुटि के बिना सहायक कतार में इस कतार पर संचालन करना चाहता हूं।

उत्तर:

जवाब के लिए 2 № 1

एक अभिव्यक्ति की तरह

  *queue->front++;

के रूप में पार्स हो जाओ

  *( queue->front++) ;

की वजह से संचालक वरीयता, इसलिए अंतिम परिणाम (dereference ऑपरेटर लागू करके प्राप्त) है अप्रयुक्त। यही संकलक है जिसके बारे में शिकायत है और मेरा झटका है, यह सही है।

सबसे अधिक, आप क्या चाहते हैं

       (*(queue->front) )++ ;

जवाब के लिए 0 № 2

बयान *queue->count++ ऑपरेटर प्राथमिकता के कारण वास्तव में मतलब है *(queue->count++), और मुझे आश्चर्य है कि यह कोड एक अलग त्रुटि संदेश क्यों नहीं देता है। मेरा ये अनुमान है count, front, आदि अभिन्न मूल्य हैं; इसलिए, *queue->count एक अभिन्न मूल्य को अस्वीकार करता है, जिसे अनुमति नहीं दी जाती है क्योंकि केवल पॉइंटर्स को संदर्भित किया जा सकता है।

मुझे लगता है, आप वास्तव में क्या चाहते हैं queue->count++


जवाब के लिए 0 № 3

संकलक को बताने के लिए शून्य को कास्ट करने का प्रयास करें कुछ भी वापस नहीं किया जाता है

(void)*queue->front++;

संबंधित सवाल
सबसे लोकप्रिय