Avatar ·

هل يمكن أن يتصرف الكود الصحيح في C و C++ بشكل مختلف؟

مرحبًا بالجميع! أنا مطور C++ مبتدئ، لكن في الجامعة كانوا يجبروننا على الكتابة بلغة C. الآن لاحظت شيئًا غريبًا: أحيانًا يتم تجميع نفس الكود في C و C++، لكنه يعمل بشكل مختلف تمامًا. على سبيل المثال، كتبت برنامجًا صغيرًا يستخدم sizeof مع سلسلة نصية ويقارنها بمؤشر. إليك الكود: ```c #include int main() { char arr[] = "Hello"; char *ptr = "Hello"; if (sizeof(arr) == sizeof(ptr)) { printf("الأحجام متساوية\n"); } else { printf("الأحجام مختلفة\n"); } return 0; } ``` في C++ حصلت على رسالة "الأحجام مختلفة"، وفي C أيضًا "الأحجام مختلفة"، لكنني سمعت أن هناك أمثلة حيث يختلف السلوك بشكل جذري. هل يمكن أن يتصرف الكود الصحيح في كل من C و C++ بشكل مختلف؟ إذا كان الأمر كذلك، أعط مثالًا محددًا مع شرح. شكرًا مقدمًا! <<>>

نعم، يوجد مثل هذا الكود: المثال الكلاسيكي هو التحويل الضمني لـ void