سؤال

هل الكلمة الرئيسية غير الموقعة الافتراضية لنوع بيانات معين في C ++؟ أحاول كتابة وظيفة لفصل للنموذج الأولي:

unsigned Rotate(unsigned object, int count)

لكني لا أحصل على ما unsigned يعني. لا ينبغي أن يكون مثل unsigned int أو شيء ما؟

هل كانت مفيدة؟

المحلول

من حلقة الوصل في الاعلى:

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

هذا يعني أنه يمكنك افتراض أن المؤلف يستخدم INTS.

نصائح أخرى

أنواع عدد صحيح:

short            -> signed short
signed short
unsigned short
int              -> signed int
signed int
unsigned int
signed           -> signed int
unsigned         -> unsigned int
long             -> signed long
signed long
unsigned long

كن حذرا من تشار:

char  (is signed or unsigned depending on the implmentation)
signed char
unsigned char

هل الكلمة الرئيسية غير الموقعة الافتراضية لنوع البيانات في C ++

نعم ، يمكن أيضًا استخدام موقّع وغير موقّع كحديد نوع مستقل

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

يمكن أن يكون لعدد صحيح غير موقّع يحتوي على أجزاء n قيمة بين 0 و 2ن - 1 (وهو 2ن قيم مختلفة).

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

unsigned NextYear;
unsigned int NextYear;

يمكنك أن تقرأ عن الكلمة الرئيسية غير موقعة في مرجع C ++.

هناك نوعان مختلفان في هذه المسألة ، موقعة وتوقيع. يتم توقيع الافتراضي للأعداد الصحيحة مما يعني أنه يمكن أن يكون لها قيم سلبية.

على نظام 32 بت ، يكون عدد صحيح 32 بت مما يعني أنه يمكن أن يحتوي على قيمة ~ 4 مليار.

وعندما يتم توقيعه ، هذا يعني أنك بحاجة إلى تقسيمه ، تاركًا من 2 مليار إلى 2 مليار.

عندما تكون غير موقعة ولكن القيمة لا تستطيع تحتوي على أي أرقام سالبة ، لذلك بالنسبة للأعداد الصحيحة ، فإن هذا يعني من 0 إلى +4 مليار.

هناك المزيد من المعلومات على هذا ويكيبيديا.

نعم ، هذا يعني unsigned int. كان من المعتاد أنه إذا لم تحدد نوع بيانات في C ، فهناك العديد من الأماكن التي يفترض فيها للتو int. كان هذا ، على سبيل المثال ، من أنواع إرجاع الوظائف.

تم القضاء على هذا الثؤلول في الغالب ، لكنك تواجه آخر بقاياها هنا. IMHO ، يجب إصلاح الكود ليقول unsigned int لتجنب مجرد نوع من الالتباس الذي تواجهه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top