هل يمكن أن يتصرف الكود الصحيح في 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++ بشكل مختلف؟ إذا كان الأمر كذلك، أعط مثالًا محددًا مع شرح. شكرًا مقدمًا!
<<>>