ماذا يعني العامل '-->' في 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.
<<>>