عدد صحيح (علوم حاسوب)

مدخل لنوع بيانات

العدد الصحيح في علوم الحاسوب (كما يُسمى في الإنجليزية (بالإنجليزية: integer)‏) هو مرجع لنوع متكامل من البيانات، ويمثل بيانات ضمن مجال الأعداد الصحيحة رياضياً. تختلف إمكانية القسم السالبة باختلاف لغة البرمجة المعتمدة وكذلك حجم المجال. عادةً ما تمثل الأعداد الصحيحة في الحاسب بمجموعة من الأرقام الثنائية، ويعتمد أيضاً الحجم على نوع المعالج. توفر الحواسيب دومًا طريقة لتمثيل سجل المعالج أو عنوان الذاكرة بهيئة عدد صحيح. اعتمد في المقالة على التسميات الأجنبية لاعتمادها عالمياً وتقنياً في مجال الحاسب مع ترجمتها عند ورودها المرة الأولى.

القيمة والتمثيلعدل

قيمة عنصر بنوع متكامل هي العدد الصحيح الرياضي الذي يتوافق معه. قد تكون الأنواع المتكاملة بدون إشارة (قادرة على تمثيل الأعداد الصحيحة غير السالبة فقط) أو مع إشارة لتمثيل الأعداد الموجبة والسالبة معاً.[1] تحدد بنية العدد الصحيح في الشيفرة المصدرية لبرنامج ما على شكل سلسلة من الأرقام مسبوقة اختياريًا بـالإشارة الموجبة أو السالبة. تسمح بعض لغات البرمجة بإضافة الأعداد بأنظمة عد مكافئة للعشرية مثل نظام العد الست عشري (ذو الأساس 16) أو الثماني (الأساس 8). تسمح بعض لغات البرمجة أيضًا بفواصل عشرية للأرقام.[2] طريقة التمثيل الداخلي للبيانات هي الطريقة التي تحفظ بها الأعداد الصحيحة في ذاكرة الحاسب، تنحصر الأعداد الصحيحة حاسوبياً في مجال من الأعداد الصحيحة رياضياً، أي خلافاً للأعداد الصحيحة رياضياً، هناك حدود دنيا وعليا لقيم الأعداد الصحيحة. الطريقة الأكثر شيوعاً لتمثيل العدد الصحيح الموجب هو سلسلة من البتات باستخدام نظام العد الثنائي، وتختلف خوارزمية ترتيب هذه البتاتي في الذاكرة وفقاً ترتيب البايتات، حيث عرض أو نوع العدد الصحيح يحدد عدد البتات التي يمثلها. العدد الصحيح الذي يخة ي عدد س من البايتات يشفر بقيمة ثنائية 2س. على سبيل المثال الأعداد الصحيحة غير المؤشرة (أي التي تضم الأعداد الصحيحة غير السالبة فقط) تقع ضمن المجال من 0 حتى 2س-1. تُستخدم أحيانًا ترميزات أخرى لقيم الأعداد الصحيحة لأنماط البت، على سبيل المثال نظام عشري مشفر ثنائياً أو شفرة منعكسة أو بشكل رموز أحرف مطبوعة مثل أسكي.

هناك أربع طرق معروفة لتمثيل الأرقام مع إشارة في نظام الحوسبة الثنائية. الأكثر شيوعًا هو المتمم الثنائي، والذي يسمح بالمجال المتمم للعدد من القيمة س بت لتمثيل الأرقام من −2 (س-1) حتّى 2 (س-1) −1. الحساب متمم ثنائي مريحة لأن هناك تقابل مثالي بين التمثيل والقيم (وخاصة بسبب عدم الفصل بين القيمة الموجبة والسالبة للصفر)، ولأن إضافة، الطرح والضرب لا تحتاج إلى التمييز بين أنواع المؤشرة أو غير المؤشرة. الطرق الأخرى تشمل الإزاحة الثنائية عبر الضارب التسلسلي، ووزن الإشارة لتمثيل العدد المؤشر والمتمم الأحادي.

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

أنواع الأعداد الصحيحة الشائعة في علوم الحاسوبعدل

البتات الاسم المجال (باعتبار المؤشر بطريقة المتمم الثنائي) القيمة العشرية يستخدم في التطبيقات
سي (لغة برمجة)/سي++ سي شارب باسكال (لغة برمجة) ودلفي (لغة برمجة) جافا (لغة برمجة) إس كيو إل[أ] فورتران دي (لغة برمجة)
4 نايبل، نصف ثماني (SemiOctet) مع إشارة: من −8 حتى 7، أي من −(23) حتى 23 − 1 0.9 نظام عشري مشفر ثنائيا، أحادي، التمثيل العشري الرقمي
بدون إشارة: من 0 حتى 15، المكافئ لـ 24 − 1 1.2
8 بايت، ثمانية (حوسبة), i8, u8 المؤشر: من −128 حتى 127، أي من −(27) حتّى27 − 1 2.11 محارف الأسكي، ترميز المحارففي صيغة التحويل الموحد-8 int8_t, signed char[ب] sbyte Shortint byte tinyint integer(1) byte
غير المؤشر: من 0 حتى 255, المكافئ لـ 28 − 1 2.41 uint8_t, unsigned char[ب] byte Byte unsigned tinyint ubyte
16 نصف كلمة (HalfWord)، كلمة (بنية الحاسوب) (Word)، قصير (Short)، i16 u16 مع إشارة: من −32,768 حتى 32,767, من −(215) حتى 215 − 1 4.52 مجموعة المحارف العالمية الإصدار 2 (UCSترميز المحارف في يو تي اف-16 ترميز المحارف int16_t, short,[ب] int[ب] short Smallint short smallint integer(2) short
غير المؤشر: من 0 حتى 65,535, المكافئ لـ 216 − 1 4.82 uint16_t, unsigned,[ب] unsigned int[ب] ushort Word char[ج] unsigned smallint ushort
32 كلمة (Word)، طويل (Long)، كلمة مضاعفة (Double Word)، كلمة طويلة (Long Word)، عدد صحيح (int) i32, u32 مع إشارة: من −2,147,483,648 حتى 2,147,483,647، أي من −(231) حتى 231 − 1 9.33 محارف يو تي اف-32، عمق لوني مع ألفا، ترميز رباعي المحارف، المؤشرات في معمارية 32 بت int32_t, int,[ب] long[ب] int LongInt; Integer[د] int int integer(4) int
غير المؤشر: من 0 حتى 4,294,967,295, المكافئ لـ 232 − 1 9.63 uint32_t, unsigned,[ب] unsigned int,[ب] unsigned long[ب] uint LongWord; DWord; Cardinal[د] unsigned int uint
64 كلمة، كلمة مضاعفة (Double Word)، طويل طويل (Long long)، رباعي (quad)، كلمة رباعية (QuadWord)، كلمة من النوع qword

الصنف int64، وi64, u64

مع إشارة: من −9,223,372,036,854,775,808 حتى قوة العدد اثنين، أي من −(263) حتى 263 − 1 18.96 التوقيت (ميللي ثانية في توقيت يونكس)، المؤشرات فيمعمارية 64 بت int64_t, long,[ب] long long[ب] long Int64 long bigint integer(8) long
غير المؤشر: من 0 حتى 18,446,744,073,709,551,615, المكافئ لـ 264 − 1 19.27 uint64_t, unsigned long long[ب] ulong UInt64; QWord unsigned bigint ulong
128 كلمة ثمانية (octaword)، وكلمة رباعية مضاعفة (double quadword) والأنواع i128, u128 مع إشارة: من −170,141,183,460,469,231,731,687,303,715,884,105,728 حتى 170,141,183,460,469,231,731,687,303,715,884,105,727, من −(2127) حتى 2127 − 1 38.23 حسابات علمية معقدة، عناوينبروتوكول الإنترنت (الإصدار السادس)، معرّف فريد عالميًا (GUIDs) C: متاح فقط كملحق غير قياسي خاص بالمترجم integer(16) cent[ه]
غير المؤشر: من 0 حتى 340,282,366,920,938,463,463,374,607,431,768,211,455, المكافئ لـ 2128 − 1 38.53 ucent[ه]
n عدد صحيح بعدد n
(الحالة العامَّة)
مع إشارة: −(2n−1) حتى (2n−1 − 1) (n − 1) log10 2 أيدا (لغة برمجة): range -2**(n-1)..2**(n-1)-1
غير المؤشر: 0 حتى (2n − 1) n log10 2 Ada: range 0..2**n-1, mod 2**n; المكتبات القياسية أو الفئات العشرية الكبيرة أوالعشرية للمكتبات الحسابية الرياضية التابعة لجهات خارجية في العديد من اللغات مثل Python و C ++ ، إلخ.

تدعم وحدات المعالجة المركزية المختلفة أنواعًا مختلفة من البيانات الصحيحة. عادةً، يدعم العتاد الصلب البيانات بنوعيها المؤشر وبدون إشارات، لكن ضمن مجال محدد صغير وثابت القيم. يسرد الجدول أعلاه عروض الأنواع الأرقام الصحيحة التي تدعمها المعالجات الشائعة في الأجهزة. توفر لغات البرمجة عالية المستوى المزيد من الاحتمالات. من الشائع أن يكون لديك نوع أرقام صحيح «مزدوج العرض» يحتوي على ضعف عدد البتات مثل أكبر الأنواع المدعومة من الأجهزة. تحتوي العديد من اللغات أيضًا على أنواع حقل بت (عدد محدد من البتات، يقيَّد عادةً ليكون أقل من الحد الأقصى للعرض المدعوم من الأجهزة) وأنواع النطاق (التي يمكن أن تمثل فقط الأعداد الصحيحة في نطاق محدد).

تدعم بعض اللغات، مثل ليسب وسمول توك وري أكس أكس وهاسكل وبايثون وراكو، الأعداد الصحيحة العشوائية الدقيقة (المعروفة أيضًا باسم الأعداد الصحيحة اللانهائية أو حساب تدريج الدقة الحر). قد تحتوي اللغات الأخرى التي لا تدعم هذا المفهوم كإنشاء مستوى أعلى مكتبات متاحة لتمثيل أعداد كبيرة جدًا باستخدام مصفوفات من المتغيرات الأصغر، مثل الجافا التي تحوي BigInteger أو لغة بيرل التي تملك فئة "bigint ".[5] هذه تستخدم أكبر قدر من ذاكرة الحاسب كما هو ضروري لتخزين الأرقام؛ ومع ذلك، فإن المعالج يحتوي فقط على كمية محدودة من التخزين، لذلك يمكنهم أيضًا تمثيل مجموعة فرعية محدودة من الأعداد الصحيحة الرياضية. تدعم هذه المخططات أرقامًا كبيرة جدًا، على سبيل المثال، يمكن استخدام كيلوبايت واحد من الذاكرة لتخزين أرقام تصل إلى 2466 رقمًا عشريًا.

نوع البيانات المنطقية أو حقل الأعلام هو نوع يمكن أن يمثل قيمتين فقط: 0 و 1، عادةً ما يتم تحديدهما بـصح أو خطأ على الترتيب. يمكن تخزين هذا النوع في الذاكرة باستخدام بت واحد، ولكن غالبًا ما يتم إعطاؤه بايت كامل لسهولة المعالجة وسرعة الوصول. تُعرف الكمية المكونة من أربعة بتات باسم نايبل الذي يقابل رقمًا واحدًا في نظام سداسي عشري ويحمل رقمًا واحدًا أو رمز علامة في النظام العشري الثنائي.

بايت والثمانيةعدل

أطلق مصطلح «بايت» بادئ الأمر على أصغر وحدة عنونة في الذاكرة، وكان هناك بايتات بقيمة عنونة 5 و 6 و 7 و8 و9بتات. بالإضافة لوحود معالجات تعنون وحدات البت المنفردة («أجهزة عنونة بالبت»)، أو قد تعنون العناوين بنظام 16 أو 32 بت («أجهزة عنونة بالكلمة»). كما لم يستخدم مصطلح البت إطلاقاً في آلات العنونة البت والكلمة.

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

الكلمةعدل

يستخدم مصطلح «كلمة» لمجموعة صغيرة من وحدات البت التي يتم التعامل معها في وقت واحد بواسطة معالجات من بنية معينة. وبالتالي فإن حجم الكلمة خاص بوحدة المعالجة المركزية. تم استخدام العديد من أحجام الكلمات المختلفة، بما في ذلك 6 و 8 و 12 و 16 و 18 و 24 و 32 و 36 و 39 و 40 و 48 و 60 و 64 بت. نظرًا لأنه بنيوياً، تُحدد حجم الكلمة عادةً بواسطة وحدة المعالجة المركزية الأولى في العائلة، بدلاً من خصائص وحدة المعالجة المركزية المتوافقة لاحقًا. معاني المصطلحات المشتقة من الكلمة، مثل كلمة طويلة longword وكلمة مضاعفة doubleleword وكلمة رباعية quadword ونصف كلمة halfword ، تختلف أيضًا باختلاف وحدة المعالجة المركزية ونظام التشغيل.

عمليا جميع معالجات سطح المكتب الجديدة قادرة على استخدام كلمات 64 بت، على الرغم من أن الأنظمة المضمنة ذات حجم الكلمات 8 و 16 بت لا تزال شائعة. بعدما كان طول الكلمة 36 بت شائعًا في الأيام الأولى لأجهزة الكمبيوتر.

أحد الأسباب المهمة لعدم إمكانية نقل البرنامج هو الافتراض غير الصحيح بأن جميع أجهزة الكمبيوتر لها نفس حجم الكلمات مثل الكمبيوتر الذي يستخدمه المبرمج. على سبيل المثال، إذا أعلن مبرمج يستخدم لغة C بشكل غير صحيح أنهint متغير التي سيتم استخدامها لتخزين القيم أكبر من 2 15 -1، ستفشل البرنامج على أجهزة الكمبيوتر مع الأعداد الصحيحة 16-بت. كان يجب التصريح عن هذا المتغير كـlong ، والذي يحتوي على 32 بت على الأقل على أي جهاز كمبيوتر. قد يفترض المبرمجون أيضًا بشكل غير صحيح أنه يمكن تحويل المؤشر إلى عدد صحيح دون فقد المعلومات، والذي قد يعمل على (بعض) أجهزة الكمبيوتر 32 بت، ولكنه يفشل على أجهزة الكمبيوتر 64 بت ذات مؤشرات 64 بت وأعداد صحيحة 32 بت. تم حل هذه المشكلة عن طريق C99 في stdint.h في شكل intptr_t .

عدد صحيح قصيرعدل

يمثل العدد الصحيح القصير الرقم كاملاً الذي يمكن أن يحجز مساحةً أصغر في الذاكرة، وبجال أصغر مقارنة مع العدد الصحيح الذي يحجزه المعالج. في لغة سي عندما يُعرّف المتحول بكونه قصيراً. عندئذ يحجز في الذاكرة ما يساوي 16 بتاً على الأقل، وأحياناً أقل من مساحة المتحول الصحيح القياسي، لكن ذلك غير ملزم.[6][7] يمكن أن يفترض البرنامج المطابق أنه يمكنه تخزين القيم بأمان بين - (2 15 −1) [8] و 2 15 −1، [9] ولكنه قد لا يفترض أن النطاق ليس أكبر. في جافا، إن المصطلح قصير (short) هو دائمًا عدد صحيح 16 بت. في واجهة برمجة تطبيقات ويندوز، نوع البيانات SHORT على أنها عدد صحيح مؤشر بقيمة 16 بت على جميع الأجهزة.

أحجام الأعداد الصحيحة القصيرة الشائعة
لغة برمجة اسم نوع البيانات الإشارات الحجم بالبايت الحد الأدنى للقيمة القيمة القصوى
سي وسي++  short مؤشر 2 −32767   +32767
 unsigned short غير مؤشر 2 0 65.535
سي#  short مؤشر 2 -32768 +32767
 ushort غير مؤشر 2 0 65.535
جافا  short مؤشر 2 -32768 +32767

عدد صحيح طويلعدل

عدد صحيح طويل يمكن أن يمثل كله صحيحا التي نطاق أكبر من أو مساوية لعدد صحيح القياسية على نفس الجهاز. في لغة سي، يُشار إلى الأعداد الصحيحة من النوع الطويل بـ long. والتي يَفترض أنها تساوي 32 بت على الأقل، عندها تكون أكبر من حجم العدد الصحيح القياسي، لكنها تخالف ذلك بعض الأحيان، إلّا أنَّ البرنامج الموافق يمكنه تخزين القيم بأمان بين - (2 31 −1) [10] و 2 31 −1، [11] ولكنه قد لا يفترض أن النطاق ليس أكبر من ذلك.

أنواع الأعداد الصحيحة الطويلة الشائعة
لغة البرمجة نوع الموافقة المنصات اسم نوع البيانات التخزين بالبايت نطاق العدد الصحيح
سي ISO / ANSI C99.0 المعيار الدولي يونكس، أنظمة 16/32

ويندوز، أنظمة 16/32/64 بت

long [و] 4

(الحد الأدنى من المتطلبات 4)

−2,147,483,647 إلى +2,147,483,647
سي ISO / ANSI C99.0 المعيار الدولي يونكس أنظمة 64 بت long [lower-alpha 7] 8
(الحد الأدنى من المتطلبات 4)
−9,223,372,036,854,775,807 إلى +9,223,372,036,854,775,807
س++ ISO / ANSI المعيار الدولي يونكس، ويندوز،

نظام 16/32 بت

long [lower-alpha 7] 4 [13]
(الحد الأدنى من المتطلبات 4)
−2,147,483,648 إلى +2,147,483,647

</br>

C ++ / CLI المعيار الدولي
ECMA-372
يونكس، ويندوز،
أنظمة 16/32 بت
long [lower-alpha 7] 4 [14]
(الحد الأدنى من المتطلبات 4)
−2,147,483,648 إلى +2,147,483,647
فيجوال بيسك معيار الشركة ويندوز Long 4 [15] −2,147,483,648 إلى +2,147,483,647
فيجوال بيسك للتطبيقات معيار الشركة نظام التشغيل ويندوز وMac OS X Long 4 [16] −2,147,483,648 إلى +2,147,483,647
خادم قاعدة البيانات معيار الشركة ويندوز BigInt 8 −9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807
سي شارب / فيجوال بيسك دوت نت معيار ECMA الدولي مايكروسوفت دوت نت وفيجوال بيسك دوت نت long أوInt64 8 −9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807
جافا المعيار الدولي/ الشركة منصة جافا long 8 −9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807
باسكال ؟ ويندوز، يونيكس int64 8 −9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807

عدد صحيح طويل طويلعدل

يحتوي المدخل طويل طويل (long long) في الإصدار سي99 من لغة البرمجة سي والإصدار سي++ 11 بكلمة محجوزة بالشكلlong long ، وتكون قيمة هذا الحقل في لغة سي++ مساويةً لضعف الحد الأدنى من السعة القياسية للمدخل long. هذا النوع غير مدعوم من قبل المترجمات التي تتطلب كود سي ليكون متوافقًا مع معيار سي++ السابق، وهو غير موجود في مترجمات سيي++ 03 لعدم توافقع مع معايير ANSI / ISO للمترجم ومتطلبات الحد الأدنى لنطاقات محددة ضمنها، والتي تكافئ في الأعداد المؤشرة المجال بين −(263−1)[8] حتى 263−1 ومن 0 حتّى 2 64 -1 ل لغير المؤشرة منها [17] لا بد منه تتحقق؛ ومع ذلك، يُسمح بتوسيع هذا النطاق.[18][19] يمكن أن يكون هذا مشكلة عند تبادل التعليمات البرمجية والبيانات بين الأنظمة الأساسية، أو القيام بوصول مباشر إلى الأجهزة. وبالتالي، هناك عدة مجموعات من الرؤوس توفر أنواع عرض دقيقة مستقلة للمنصة. توفر مكتبة C القياسية stdint.h ؛ تم تقديم هذا في C99 و C ++ 11.

ملاحظاتعدل

  1. ^ مع الأخذ بعين الاعتبار أنه ليست جميع برمجال لغة SQL تحوي أعداد صحيحة غير مؤشرة [3][4]
  2. أ ب ت ث ج ح خ د ذ ر ز س ش ص أحجام char و short و int و long و long long في C/C++ هي تعتمد على تنفيذ اللغة.
  3. ^ لاتدعم لغة الجافا العمليات الحسابية مباشرة على المحارف من النوع char. ويجب أن تعاد قيمة النتيجة من التركيب الصحيح int إلى النوع char.
  4. أ ب أحجام دلفي int و char غير مضمونة، حيث تختلف من منصة إلى أخرى؛ تُعرَّف عادةً باسم LongInt و LongWord على التوالي.
  5. أ ب محجوزة للاستخدام المستقبلي، لم تنفذ حتى الآن.
  6. ^ المصطلحان long وint متكافئان.[12]

انظر أيضاًعدل

المراجععدل

  1. ^ Cheever، Eric. "Representation of numbers". Swarthmore College. مؤرشف من الأصل في 2021-10-09. اطلع عليه بتاريخ 2011-09-11.
  2. ^ Madhusudhan Konda (2 سبتمبر 2011). "A look at Java 7's new features - O'Reilly Radar". Radar.oreilly.com. مؤرشف من الأصل في 2016-02-28. اطلع عليه بتاريخ 2013-10-15.
  3. ^ "Sybase Adaptive Server Enterprise 15.5: Exact Numeric Datatypes". مؤرشف من الأصل في 2021-01-16.
  4. ^ "MySQL 5.6 Numeric Datatypes". مؤرشف من الأصل في 2021-12-03.
  5. ^ "BigInteger (Java Platform SE 6)". Oracle. مؤرشف من الأصل في 2021-05-09. اطلع عليه بتاريخ 2011-09-11.
  6. ^ Giguere، Eric (18 ديسمبر 1987). "The ANSI Standard: A Summary for the C Programmer". مؤرشف من الأصل في 2021-04-27. اطلع عليه بتاريخ 2010-09-04.
  7. ^ Meyers، Randy (1 ديسمبر 2000). "The New C: Integers in C99, Part 1". drdobbs.com. مؤرشف من الأصل في 2012-05-27. اطلع عليه بتاريخ 2010-09-04.
  8. أ ب "ISO/IEC 9899:201x" (PDF). open-std.org. section 6.2.6.2, paragraph 2. مؤرشف من الأصل (PDF) في 2021-12-25. اطلع عليه بتاريخ 2016-06-20.
  9. ^ "ISO/IEC 9899:201x" (PDF). open-std.org. section 5.2.4.2.1. مؤرشف من الأصل (PDF) في 2021-12-25. اطلع عليه بتاريخ 2016-06-20.
  10. ^ "ISO/IEC 9899:201x" (PDF). open-std.org. section 6.2.6.2, paragraph 2. مؤرشف من الأصل (PDF) في 2021-12-25. اطلع عليه بتاريخ 2016-06-20.
  11. ^ "ISO/IEC 9899:201x" (PDF). open-std.org. section 5.2.4.2.1. مؤرشف من الأصل (PDF) في 2021-12-25. اطلع عليه بتاريخ 2016-06-20.
  12. ^ "ISO/IEC 9899:201x" (PDF). open-std.org. مؤرشف من الأصل (PDF) في 2021-12-25.
  13. ^ "Fundamental types in C++". cppreference.com. مؤرشف من الأصل في 2011-06-13. اطلع عليه بتاريخ 2010-12-05.
  14. ^ "Chapter 8.6.2 on page 12" (PDF). ecma-international.org. مؤرشف من الأصل (PDF) في 2020-12-24.
  15. ^ VB 6.0 help file
  16. ^ "The Integer, Long, and Byte Data Types (VBA)". microsoft.com. مؤرشف من الأصل في 2021-04-28. اطلع عليه بتاريخ 2006-12-19.
  17. ^ "ISO/IEC 9899:201x" (PDF). open-std.org. section 5.2.4.2.1. مؤرشف من الأصل (PDF) في 2021-12-25.
  18. ^ Giguere، Eric (18 ديسمبر 1987). "The ANSI Standard: A Summary for the C Programmer". مؤرشف من الأصل في 2021-04-27.
  19. ^ "American National Standard Programming Language C specifies the syntax and semantics of programs written in the C programming language". مؤرشف من الأصل في 2010-08-22.