عند كتابة ملفات C في VS Code، قمت بتسمية الملف first.c.cpp. بعد الانتهاء من البرنامج، واجهت أخطاء أثناء التنفيذ. بعد 30 دقيقة من استكشاف الأخطاء وإصلاحها، اكتشفت أن المشكلة تكمن في اسم الملف:
أدى الامتداد .c إلى قيام IDE بتعريفه عن طريق الخطأ على أنه برنامج C، مما تسبب في استخدام VS Code لـ gcc (مترجم C) بدلاً من g (مترجم C) لتجميع الكود الخاص بي.
التسمية التوضيحية: يا له من أحمق!
تختلف فلسفة تصميم جافا بشكل كبير عن اللغات التقليدية المترجمة:
يحقق هذا التصميم هدف "الكتابة مرة واحدة، والتشغيل في أي مكان،" بينما تقتصر ملفات C التنفيذية (ملفات .exe) على التشغيل على نظام أساسي واحد.
المميزات: يمكن تشغيل نفس البرنامج على أجهزة كمبيوتر مختلفة دون تعديل
العيوب : الخطوة الإضافية في العملية يمكن أن تجعل التجميع أبطأ قليلاً مقارنة بالطرق التقليدية
اكتب مرة واحدة، قم بالتشغيل في أي مكان
---------James Gosling
Little Endian: يتم تخزين البايت الأقل أهمية في العنوان الأدنى. ظهرت طريقة التخزين هذه لتسهيل قراءة ذاكرة وحدة المعالجة المركزية، والتي تحدث من العناوين المنخفضة إلى العناوين العالية. ومن المثير للاهتمام أن هذا عكس ما يكتبه البشر عادة من أرقام.
على سبيل المثال:
التمثيل الثنائي لـ 329933 هو 00000000 00000101 00001000 11001101
تخزين إنديان الصغير: 11001101 00001000 00000101 00000000
كما نرى، يقوم Little Endian بعكس ترتيب البايتات في التمثيل الثنائي. ومع ذلك، من المهم ملاحظة أن ترتيب البت داخل كل بايت يظل دون تغيير!
تجربتي المفضلة في تقديم نوع الكتابة!
# includeint main() { int a; int *p; a=329933; p=&a; char *q; q=(char*)p; printf("%d\n",*p); printf("%d\n",*q); }
الإخراج:
329933 -51
أتساءل لماذا ينتج -51؟
هل هذه صدفة؟ لنجرب مثالين آخرين
printf("%d\n",*(q 1)); printf("%d\n",*(q 2));
جربه:
عند إجراء عملية تحويل النوع القسري، سيشير (char)p إلى عنوان البايت الأول من int ذو الأربعة بايت، وهو 11001101.
يمثل الرقم 1 في أقصى اليسار الإشارة السالبة، مما يشير إلى أنه رقم سالب. وبعد تطبيق تكملة الاثنين نحصل على: 0110011 (آخر 7 بتات)
(ملاحظة: بالنسبة للأرقام الموجبة، فإن تكملة الاثنين هي ببساطة التمثيل الثنائي للرقم العشري. بالنسبة للأرقام السالبة، يتم الحصول على تكملة الاثنين عن طريق قلب جميع البتات باستثناء البت الموجود في أقصى اليسار (الأعلى)، ثم إضافة 1 إلى أقصى اليمين.)
تحويل هذا إلى عدد عشري يعطينا -51. مثير للاهتمام، أليس كذلك؟
يتساءل الكثير من الناس عن سبب وجود -128. إذا كنت تعرف الإجابة، فلا تتردد في مشاركتها في قسم التعليقات. لن يساعد هذا الآخرين فحسب، بل سيساعدك أيضًا على تنظيم أفكارك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3