لغة الـسي بلس بلس strongly-typed language، يعني كل variable هـنعملو declaration لازم نحدد الـ data type بتعتو الأول، دا عشان نعرف الـ compiler بالحجم اللي هيحجزو ف الـ memory للـ variable، الحجم هيكون حسب الـ data type لأن كل data type بتاخد مساحة معينة فـ الـ memory، الـ data types فـ الـ ++C ليها أنواع اساسية(Primary)، مشتقة(Derived) و أنواع أحنا بنعملها(User Defined).
لغة الـ ++C عندها أربعة أحجام للـ Integer، كل واحد من الأربعة ممكن يكون signed (سالب أو موجب أو صفر) أو unsigned (موجب بس)، للأختصار ممكن نكتب long بس بدل long int وكهذا..
representation | prefix |
---|---|
binary | 0b |
octal | 0 |
decimal | The default |
hexadecimal | 0x |
الأرقام العشرية والجزء الكسري منها مش بيتخزن بشكل كامل فـ الـ Memory لكن بيتخزن بشكل تقريبي، الـ Floating-Point Types بتاخد جزء محدود من الـ Memory بيسمى بـ type’s precision، لغة الـ ++C ليها ثلاث مستويات precision:
- float -> single precision.
- double -> double precision.
- long double -> extended precision.
الـ default للـ Floating-point literals هو double precision، لو عايزين الـ single precision بنستخدم الـخاتمة (suffix) f أو F، و للـ extended precision بنستخدم l أو L كـ suffix.
float single_precision = 0.96F; // for single precision
double double_precision = 0.256; // for double precision
long double extended_precision = 0.85L; // for extended precision
ممكن نستخم الـ Scientific notation فـ الـ Floating-point literals
double avogadro_const = 6.022e23; // = 6.02 x 10^23 (positive exponent)
double electron_charge = 1.6e-19; // = 1.6 x 10^-19 (negative exponent)
طب ايه الفرق بين float و double ؟
Difference | float | double |
---|---|---|
IEEE 754 | single-precision | double-precision |
occupy | 32 bits | 64 bits |
Byte Size | 4 byte | 8 byte |
precision after decimal point | 7 decimal digits | 15 decimal digits |
الـ Boolean values اتنين بس true أو false، رقم 1 أو اي قيمة غير الصفر بتمثل true، الـ 0 بيمثل false
bool i_love_u = true
bool i_hate_u = false
// Do you want to watch a movie with me?
bool answer = 0; // This means false
if(answer)
std::cout << "Okay let's watch, I love you <3"; // case answer is true or any number except 0
else
std::cout << ".. stupid I'll eat all the popcorn alone 💢"; // case answer is false or 0
الـ Character Types بتخزن اي رموز و حروف، وفي ستة أنواع للـ Character Types:
Character Types | character sets |
---|---|
char | 1-byte |
char16_t | 2-byte |
char32_t | 4-byte |
signed char | 1-byte |
unsigned char | 1-byte |
wchar_t | support the largest character sets |
ايه الاختلاف بين signed char و unsigned char ؟
The difference | signed char | unsigned char |
---|---|---|
Range | -128 to 127 | 0 to 255 |
Data bits | 7 data bits (1 for the sign) | 8 bits for data |
بنستخدم void فـ حالة أن الدالة مبترجعش أي value
// It just print some text and doesn't return any value
void I_dont_return(){
std::cout << "I don't return any value.";
}
// void function مثال عكس الـ
int I_return_int_value(){
int x = 2; int y = 8;
int sum = x + y;
return sum; // In this case return value is 10
}