Avatar ·

ماذا يعني العامل '-->' في C++ ولماذا يعمل؟

مرحبًا بالجميع! أنا أتعلم C++ وقد صادفت كودًا غريبًا على الإنترنت. كان مكتوبًا فيه شيء مثل: ```cpp int x = 10; while (x --> 0) { printf("%d ", x); } ``` وهذا الكود يعمل! إنه يطبع الأرقام من 9 إلى 0. في البداية اعتقدت أنه عامل جديد "سهم" (arrow operator) فاتني في الكتاب الدراسي. لكن بعد ذلك جربت كتابة `x --> 0` بدون مسافات كـ `x-->0` — وكان يعمل أيضًا. أما `x->0` — فلا، يعطي خطأ في الترجمة. بحثت في توثيق C++ ولم أجد أي ذكر للعامل `-->`. في معيار C++ توجد عوامل `->` (الوصول إلى العضو عبر المؤشر)، `--` (إنقاص)، لكن لا يوجد `-->`. كيف هذا ممكن أصلاً؟ هل هي خدعة من المترجم أم ميزة في المعيار؟ لماذا يتم ترجمة الكود `while (x --> 0)` ويعمل، رغم أن هذا العامل غير موجود؟ وهل من الآمن الكتابة بهذه الطريقة في المشاريع الحقيقية؟ سأكون ممتنًا للتوضيح! ملاحظة: إصدار المترجم: GCC 11.2، المعيار: C++20. <<>>

إجابة مختصرة: هذا هو