عند كتابة برنامج بأي لغة، تحتاج إلى استخدام متغيرات مختلفة لتخزين معلومات مختلفة. المتغيرات ليست سوى مواقع ذاكرة محجوزة لتخزين القيم. وهذا يعني أنه عند إنشاء متغير، فإنك تحجز بعض المساحة في الذاكرة.
قد ترغب في تخزين معلومات من أنواع بيانات مختلفة مثل الأحرف والرموز العريضة والأعداد الصحيحة والفاصلة العائمة والفاصلة العائمة المزدوجة والمنطقية وما إلى ذلك. بناءً على نوع بيانات المتغير، يخصص نظام التشغيل الذاكرة ويقرر ما يمكن تخزينه في الذاكرة المحجوزة.
الأنواع المضمنة البدائية
يوفر C++ للمبرمج مجموعة غنية من الأنواع المضمنة
يوضح الجدول التالي سبعة أنواع أساسية من بيانات C++
Type | Keyword |
---|---|
Boolean | bool |
Character | char |
Integer | int |
Floating point | float |
Double floating point | double |
Valueless | void |
Wide character | wchar_t |
يمكن تعديل العديد من الأنواع الأساسية باستخدام واحد أو أكثر من معرّفات النوع هذه −
signed
unsigned
short
long
يوضح الجدول التالي نوع المتغير، وكمية الذاكرة اللازمة لتخزين القيمة في الذاكرة، وما هي القيمة القصوى والدنيا التي يمكن تخزينها في هذا النوع من المتغيرات.
Type | Typical Bit Width | Typical Range |
---|---|---|
char | 1byte | -127 to 127 or 0 to 255 |
unsigned char | 1byte | 0 to 255 |
signed char | 1byte | -127 to 127 |
int | 4bytes | -2147483648 to 2147483647 |
unsigned int | 4bytes | 0 to 4294967295 |
signed int | 4bytes | -2147483648 to 2147483647 |
short int | 2bytes | -32768 to 32767 |
unsigned short int | 2bytes | 0 to 65,535 |
signed short int | 2bytes | -32768 to 32767 |
long int | 8bytes | -9223372036854775808 to 9223372036854775807 |
signed long int | 8bytes | same as long int |
unsigned long int | 8bytes | 0 to 18446744073709551615 |
long long int | 8bytes | -(2^63) to (2^63)-1 |
unsigned long long int | 8bytes | 0 to 18,446,744,073,709,551,615 |
float | 4bytes | |
double | 8bytes | |
long double | 12bytes | |
wchar_t | 2 or 4 bytes | 1 wide character |
قد يختلف حجم المتغيرات عن تلك الموضحة في الجدول أعلاه، وذلك حسب المترجم والكمبيوتر الذي تستخدمه.
مثال
فيما يلي مثال سيُظهر الحجم الصحيح لأنواع البيانات المختلفة على جهاز الكمبيوتر الخاص بك.
#include <iostream> using namespace std; int main() { cout << "Size of char: " << sizeof(char) << " bytes" << endl; cout << "Size of int: " << sizeof(int) << " bytes" << endl; cout << "Size of short int: " << sizeof(short int) << " bytes" << endl; cout << "Size of long int: " << sizeof(long int) << " bytes" << endl; cout << "Size of float: " << sizeof(float) << " bytes" << endl; cout << "Size of double: " << sizeof(double) << " bytes" << endl; cout << "Size of wchar_t: " << sizeof(wchar_t) << " bytes" << endl; return 0; }
يستخدم هذا المثال endl، الذي يقوم بإدراج حرف سطر جديد بعد كل سطر، ويتم استخدام عامل << لتمرير قيم متعددة إلى الشاشة.
نستخدم أيضًا عامل sizeof() للحصول على حجم أنواع البيانات المختلفة.
عند تجميع الكود أعلاه وتنفيذه، فإنه ينتج النتيجة التالية التي يمكن أن تختلف من جهاز إلى آخر −
#include <limits> using namespace std; int main() { std::cout<<"Int Min "<<std::numeric_limits<int>::min() <<endl; std::cout<<"Int Max "<<std::numeric_limits<int>::max() <<endl; std::cout<<"Unsigned Int Min "<<std::numeric_limits<unsignedint>::min() <<endl; std::cout<<"Unsigned Int Max "<<std::numeric_limits<unsignedint>::max() <<endl; std::cout<<"Long Int Min "<<std::numeric_limits<longint>::min() <<endl; std::cout<<"Long Int Max "<<std::numeric_limits<longint>::max() <<endl; std::cout<<"Unsigned Long Int Min "<<std::numeric_limits<unsignedlongint>::min() <<endl; std::cout<<"Unsigned Long Int Max "<<std::numeric_limits<unsignedlongint>::max() <<endl; }
Derived Data Types أنواع البيانات المشتقة
أنواع البيانات التي يتم الحصول عليها من أنواع البيانات المحددة مسبقًا في C++ تُعرف باسم أنواع البيانات المشتقة. ويمكن تصنيفها إلى أربع فئات، وهي − 1. الدالة Function
الدالة هي أبسط أشكال نوع البيانات المحدد من قبل المستخدم. وهي تتضمن نوع إرجاع واسم دالة ومعلمات إدخال.
return_type function_name(input_param1, input_param2…) { <function_body> }
#include <iostream> using namespace std; string func(int n){ //returns if n is odd or even if(n%2) return"Given number is Odd !"; elsereturn"Given number is Even !"; } int main(){ inta; //enter a number cin>>a; cout<<func(a); //a simple function to check if //number is odd or even return0; }