Kodax

المتغيرات والأنواع — أساسيات C++

المتغيرات وأنواع البيانات

المتغير مكان في الذاكرة له اسم ونوع. على عكس Python، في C++ يجب أن تعلن عن نوع المتغير عند إنشائه، والنوع لا يتغير بعد ذلك (كتابة ثابتة static typing). المترجم يستخدم النوع ليعرف حجم الذاكرة والعمليات المسموحة، ويرفض الكود الذي يخلط الأنواع بشكل خاطئ قبل تشغيله.

int age = 25;          // تصريح وتهيئة
double price = 9.99;
age = 26;              // تغيير القيمة مسموح
age = "ستة وعشرون";    // خطأ ترجمة: النوع int لا يقبل نصاً

الأنواع الأساسية

| النوع | يخزن | الحجم المعتاد |

|---|---|---|

| int | عدد صحيح | 4 بايت (±2.1 مليار تقريباً) |

| long long | عدد صحيح كبير | 8 بايت |

| double | عدد عشري (15-16 رقماً دقيقاً) | 8 بايت |

| float | عدد عشري أقل دقة | 4 بايت |

| char | حرف واحد بين علامتي تنصيص مفردتين 'A' | 1 بايت |

| bool | true أو false | 1 بايت |

| std::string | نص بين علامتي تنصيص مزدوجتين (يحتاج #include <string>) | متغير |

الأحجام "المعتادة" وليست مضمونة على كل الأنظمة؛ sizeof(type) يخبرك بالحجم الفعلي. استخدم double افتراضياً للأعداد العشرية.

⚠️ المتغير غير المهيأ

int count;              // قيمته عشوائية (ما كان في الذاكرة سابقاً)!
cout << count;          // سلوك غير معرّف
int total = 0;          // ✅ هيّئ دائماً

هذا من أكثر أخطاء المبتدئين شيوعاً في C++، ولا يحدث في Python.

const للثوابت

const double TAX_RATE = 0.15;
TAX_RATE = 0.2;   // خطأ ترجمة

auto

auto x = 3.5; يجعل المترجم يستنتج النوع (double هنا). مفيد مع الأنواع الطويلة، لكن للمبتدئ كتابة النوع صراحة أوضح.

التحويل بين الأنواع

int a = 7, b = 2;
double result = static_cast<double>(a) / b;   // 3.5
int truncated = static_cast<int>(3.9);         // 3 (يحذف الكسر)

static_cast هي الطريقة الحديثة والواضحة؛ ستجد في الكود القديم الصيغة (double)a.

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

حرف أو _ في البداية، بدون مسافات أو كلمات محجوزة (int، class...). الأسلوب الشائع: totalPrice أو total_price، المهم الثبات على أسلوب واحد.

تمرين

عرّف متغيرات لاسم منتج (string)، وسعره (double)، وكميته (int)، وهل هو متوفر (bool)، واطبعها مع إجمالي السعر، واطبع sizeof لكل من int و double.

#include <iostream>
#include <string>
using namespace std;

int main() {
    // الأعداد الصحيحة
    int age = 25;
    int year = 2024;
    
    // الأعداد العشرية
    float price = 99.99f;
    double pi = 3.14159265359;
    
    // الأحرف
    char grade = 'A';
    char letter = 65;  // 'A' بـ ASCII
    
    // المنطقي
    bool isStudent = true;
    bool isPassed = false;
    
    // النصوص
    string name = "أحمد";
    string message = "مرحباً بك في C++";
    
    // الثوابت
    const double TAX_RATE = 0.15;
    const int MAX_USERS = 100;
    
    // طباعة
    cout << "الاسم: " << name << endl;
    cout << "العمر: " << age << endl;
    cout << "السعر: " << price << endl;
    
    // حجم الأنواع
    cout << "حجم int: " << sizeof(int) << " bytes" << endl;
    cout << "حجم double: " << sizeof(double) << " bytes" << endl;
    
    // تحويل الأنواع
    int num = 10;
    double d = static_cast<double>(num);
    
    return 0;
}
اختبر فهمك