logo

ما هو int القصير في C؟

في لغة البرمجة C، كثافة العمليات قصيرة هو نوع بيانات يستخدم لتخزين القيم الصحيحة. إنه معدّل النوع الذي يمكن استخدامه مع نوع البيانات كثافة العمليات لإنشاء متغير عدد صحيح أصغر، باستخدام ذاكرة أقل من int العادي.

ال كثافة العمليات قصيرة يشغل نوع البيانات 2 بايت من الذاكرة، وهو نصف حجم العادية نوع البيانات كثافة العمليات ، ويمكن أن تمثل قيمًا صحيحة في نطاق -32,768 ل 32,767 .

بناء جملة كثافة العمليات القصيرة

مولد أرقام عشوائية في ج

بناء الجملة للإعلان عن متغير int قصير هو كما يلي:

 short int variable_name; 

على سبيل المثال، التعليمة البرمجية التالية تعلن وتهيئ a كثافة العمليات قصيرة المتغير المسمى العمر:

 short int age = 25; 

يمكن أن تؤدي متغيرات int القصيرة إلى حدوث أخطاء إذا لم يتم استخدامها بعناية. وذلك لأن لديهم نطاقًا أصغر من القيم المتغيرات كثافة العمليات وقد يتجاوز حجمها إذا تم تعيين قيمة خارج نطاقها. لهذا السبب، من المهم التأكد من أن القيم المخصصة لمتغير int قصير تقع ضمن نطاقه.

بالإضافة إلى ذلك، يمكن استخدام الكلمة الأساسية القصيرة بدلاً من كثافة العمليات قصيرة للإعلان عن متغير من هذا النوع. لذلك، فإن الإعلانين التاليين متساويان:

 short int variable_name; short variable_name; 

بعض التفاصيل الإضافية الأخرى حول نوع البيانات 'قصيرة int'. هم كالآتي:

    حجم ونطاق القيم

كما ذكرنا سابقًا، يشغل int القصير 2 بايت من الذاكرة، وهو نصف حجم نوع بيانات int العادي. يتم تحديد حجم int القصير من خلال التنفيذ، مما يعني أنه يمكن أن يختلف اعتمادًا على النظام الأساسي والمترجم المستخدم. ومع ذلك، فمن المضمون دائمًا أن يكون أصغر من الحجم العادي.

فيما يتعلق بنطاق القيم، يمكن لـ int القصير تخزين قيم عددية في نطاق -32,768 ل 32,767 . يمكن تحديد هذا النطاق باستخدام SHRT_MIN و SHRT_MAX الثوابت التي تم تعريفها في حدود.ح الملف الاساسي.

    استخدام 'int قصير'

عادةً ما يتم استخدام نوع البيانات int القصير عندما تكون مساحة الذاكرة موضع اهتمام، أو عندما يكون نطاق القيم المخزنة في المتغير ضمن نطاق int قصير. تتضمن بعض الأمثلة على المواقف التي يمكن فيها استخدام int قصير ما يلي:

تعليق XML
  • في الأنظمة المدمجة حيث الذاكرة محدودة.
  • عند إنشاء صفائف كبيرة من الأعداد الصحيحة حيث يجب تحسين استخدام الذاكرة.
  • عندما يكون من المعروف أن نطاق القيم المخزنة في المتغير يقع ضمن نطاق a كثافة العمليات قصيرة ، مثل تخزين عمر الشخص، والذي عادة لا يتجاوز 100 عام .
  • معدّلات النوع

ال نوع بيانات int قصير هو معدل للنوع، مما يعني أنه يمكن استخدامه مع أنواع البيانات الأخرى لإنشاء أنواع بيانات جديدة. على سبيل المثال، ما يلي هو إعلانات صالحة للمتغيرات:

 short int x; short y; short int *ptr; short int arr[10]; 
    التحويلات الضمنية

عند إجراء عمليات حسابية أو مقارنة بين متغيرات من أنواع بيانات مختلفة، قد تقوم لغة C بإجراء تحويلات ضمنية لضمان تنفيذ العمليات بشكل صحيح. عند استخدام متغيرات int قصيرة، من المهم أن تكون على دراية بهذه التحويلات، لأنها قد تؤدي إلى سلوك غير متوقع. على سبيل المثال، خذ بعين الاعتبار الكود التالي:

 #include int main() { short int x = 300; short int y = 200; short int z = x + y; printf('%d
', z); return 0; } 

انتاج:

 500 

توضيح:

في هذا الكود، ض ط تم تعيين قيمة 500 ، وهي النتيجة الصحيحة للإضافة س و و . ومع ذلك، إذا printf يتم تغيير البيان إلى برينتف('%hu ', z), سيكون الإخراج 244 ، وهو نتيجة التحويل 500 إلى غير موقعة كثافة العمليات قصيرة . يحدث ذلك لأن % هو يتم استخدام محدد التنسيق، مما يشير إلى أن القيمة التي تتم طباعتها يجب أن تكون عبارة عن قيمة قصيرة غير موقعة.

    الترقية والتخفيض

عند إجراء عمليات بين متغيرات من أنواع بيانات مختلفة، قد يقوم C بإجراء ترقيات وتخفيضات لضمان تنفيذ العمليات بشكل صحيح. يحدث الترقية عندما يتم تحويل متغير من نوع بيانات أصغر ضمنيًا إلى متغير من نوع بيانات أكبر، بينما يحدث التخفيض عندما يتم تحويل متغير من نوع بيانات أكبر ضمنيًا إلى متغير من نوع بيانات أصغر. عند استخدام متغيرات int قصيرة، من المهم أن تكون على دراية بهذه الترقيات والتخفيضات، لأنها يمكن أن تؤثر على نتائج العمليات الحسابية والمقارنة.

    التهيئة الافتراضية

اذا كان متغير int قصير تم الإعلان عنه دون تهيئته، وقيمته غير محددة. بمعنى آخر، يمكن أن تحتوي على أي قيمة، بما في ذلك قيمة سالبة أو قيمة خارج نطاق كثافة العمليات قصيرة . لذلك، من الممارسات الجيدة دائمًا تهيئة المتغيرات إلى قيمة معروفة عند الإعلان عنها.

    يصب

يصب هي عملية تحويل متغير من نوع بيانات إلى آخر. عند إرسال متغير إلى a كثافة العمليات قصيرة ، يتم اقتطاع قيمة المتغير لتناسب نطاق كثافة العمليات قصيرة . على سبيل المثال، خذ بعين الاعتبار الكود التالي:

 int x = 500; short int y = (short int) x; 

في هذا الكود قيمة س يكون 500 ، وهو خارج نطاق int القصير. رغم ذلك، متى س يلقي إلى أ كثافة العمليات قصيرة، يتم اقتطاع القيمة لتناسب نطاق كثافة العمليات قصيرة ، مما أدى إلى و يتم تعيين قيمة -12 . ولذلك، عند إرسال المتغيرات، من المهم التأكد من أن القيمة الناتجة تقع ضمن نطاق نوع البيانات الذي يتم إرساله.

    التوقيع

بشكل افتراضي، كثافة العمليات قصيرة هو نوع البيانات الموقعة مما يعني أنه يمكن أن يمثل القيم الإيجابية والسلبية. ومع ذلك، فمن الممكن أيضا أن تعلن كثافة العمليات قصيرة كنوع بيانات غير موقع، باستخدام كثافة العمليات قصيرة غير موقعة أو كلمة رئيسية قصيرة غير موقعة . يمكن أن يمثل int القصير غير الموقع قيمًا غير سالبة فقط، ولكن يتم مضاعفة نطاقه إلى 0 ل 65,535 .

فرز المصفوفة جافا
    التوافق

منذ كثافة العمليات قصيرة هو نوع بيانات أصغر من كثافة العمليات ، يمكن ترقيته ضمنيًا إلى int عند استخدامه في علم الحساب أو عمليات المقارنة مع int. يعني أن أ كثافة العمليات قصيرة يمكن استخدامها أينما كثافة العمليات متوقع، دون الحاجة إلى فريق عمل واضح.

    قابلية التنقل

حجم كثافة العمليات قصيرة يمكن أن يختلف اعتمادًا على النظام الأساسي والمترجم المستخدم. لضمان إمكانية نقل التعليمات البرمجية عبر منصات مختلفة، يوصى باستخدام ملف رأس stdint.h ، الذي يحدد أنواع الأعداد الصحيحة ذات الحجم الثابت بعرض وتوقيع محددين. على سبيل المثال، نوع int16_t هو نوع عدد صحيح موقّع 16 بت ، وهو ما يعادل كثافة العمليات قصيرة على معظم المنصات.

    فهرسة المصفوفة

عند الإعلان عن مجموعة من قيم int قصيرة ، يتم الوصول إلى كل عنصر من عناصر المصفوفة باستخدام فهرس. يمكن أن يكون الفهرس عددًا صحيحًا حرفيًا أو متغيرًا من النوع int. ومع ذلك، إذا كان الفهرس متغيرًا من النوع كثافة العمليات قصيرة ، سيتم ترقيته تلقائيًا إلى كثافة العمليات قبل استخدامها للوصول إلى المصفوفة. على سبيل المثال:

 short int arr[10]; short int i = 5; short int val = arr[i]; // i is promoted to int before being used as an index 
    التلاعب بالبت

كثافة العمليات قصيرة يمكن استخدامها لعمليات معالجة البت، مثل التحول و قناع . عند التحول أ كثافة العمليات قصيرة القيمة، والنتيجة هي قيمة int قصيرة. ومع ذلك، عند استخدام عوامل تشغيل bitwise مثل & و |، تتم ترقية قيم int القصيرة أولاً إلى int قبل تنفيذ العملية.

    أداء

في بعض الحالات، يمكن أن يؤدي استخدام int القصير بدلاً من int إلى تحسين الأداء، خاصة على الأنظمة الأساسية ذات الذاكرة المحدودة أو قوة المعالجة. ومع ذلك، يعتمد ذلك على التطبيق المحدد والأجهزة المستخدمة ويجب اختباره على أساس كل حالة على حدة.

    التهيئة باستخدام اللاحقة

توفر لغة C لاحقة لتهيئة المتغيرات بنوع int قصير. اللاحقة 'س' أو 'س' يمكن استخدامها مع قيمة ثابتة لتحديد ثابت int قصير بشكل صريح. على سبيل المثال:

 Short int x=10s;