Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

C++عوامل أخرى مهمة

  • العامل ?: (Conditional Operator)
  • العامل sizeof() (Size Of Operator)
  • العامل & (Address)
  • العامل * (Pointer)
  • العامل , (Comma)

العامل ?: (Conditional Operator)

العامل ?: يقال له Conditional أو Ternary Operator لأنه يأخذ ثلاث عناصر ليعمل.
يمكن إستعماله بدل جمل الشرط if و else في حال كنت تريد إعطاء قيمة للمتغير.


بناؤه

variable x = (expression) ? value if true : value if false
  • expression:   يمثل الشرط الذي نضعه.
  • value if true:   تمثل القيمة التي ستعطى للمتغير x إذا تحقق الشرط نضعها بعد الرمز ?.
  • value if false:   تمثل القيمة التي ستعطى للمتغير x إذا لم يتحقق الشرط نضعها بعد الرمز :.


المثال الأول

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    int a = 10;
 
    // b إن لم تكن كذالك سيتم وضع القيمة 30 في المتغير ,b تساوي 1 سيتم وضع القيمة 20 في المتغير a إذا كانت قيمة المتغير
    int b = (a == 1) ?20 :30;
 
    cout << "b = " << b;

    return 0;
}

سنحصل على النتيجة التالية عند التشغيل.

b = 30

نلاحظ أنه تم وضع القيمة 30 في b لأن نتيجة الشرط كانت false.


المثال الثاني

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    int a = 10;
    
    // b إن لم تكن كذالك سيتم وضع القيمة 30 في المتغير ,b أكبر من 1 سيتم وضع القيمة 20 في المتغير a إذا كانت قيمة المتغير
    int b = (a > 1) ?20 :30;
 
    cout << "b = " << b;

    return 0;
}

سنحصل على النتيجة التالية عند التشغيل.

b = 20

نلاحظ أنه تم وضع القيمة 20 في b لأن نتيجة الشرط كانت true.

العامل sizeof() (Size Of Operator)

يستخدم لمعرفة حجم المساحة المخصصة في الذاكرة لأي شيء يتم تمريره بين القوسين.
الرقم الذي يتم إرجاعه يمثل الحجم بالـ Byte.


المثال الأول

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    // C++ هنا قمنا بطباعة الحجم الذي يتطلبه كل نوع جاهز في لغة
    cout << "Size of char: " << sizeof(char) << endl;
    cout << "Size of int: " << sizeof(int) << endl;
    cout << "Size of float: " << sizeof(float) << endl;
    cout << "Size of double: " << sizeof(double) << endl;
    cout << "Size of short int: " << sizeof(short int) << endl;
    cout << "Size of long int: " << sizeof(long int) << endl;
    cout << "Size of long long int: " << sizeof(long long int) << endl;
    cout << "Size of long double: " << sizeof(long double) << endl;

    return 0;
}

سنحصل على النتيجة التالية عند التشغيل.

Size of char: 1
Size of int: 4
Size of float: 4
Size of double: 8
Size of short int: 2
Size of long int: 4
Size of long long int: 8
Size of long double: 12


المثال الثاني

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    // int و نوعه x هنا قمنا بتعريف متغير إسمه
    int x = 5;
    
    // x هنا قمنا بطباعة الحجم الذي تم حجزه في الذاكرة من أجل المتغير
    cout << "Size of x in memory: " << sizeof(x) << " Byte\n";

    return 0;
}

سنحصل على النتيجة التالية عند التشغيل.

Size of x in memory: 4 Byte

العامل & (Address)

يستخدم لمعرفة عنوان المساحة المخصصة في الذاكرة للشيء الذي يتم وضعه بعده مباشرةً.


مثال

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    // int و نوعه x هنا قمنا بتعريف متغير إسمه
    int x = 5;
    
    // في الذاكرة x هنا قمنا بطباعة عنوان المساحة التي تم تخصيصها للمتغير
    cout << "Address of x in memory: " << &x;

    return 0;
}

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

Address of x in memory: 0x72feec

العامل * (Pointer)

يستخدم لوضع مؤشر للشيء عند تعريفه مما يجعلك قادر على الوصول إليه بشكل مباشر من أي مكان تريد من خلال عنوانه في الذاكرة.


مثال

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    // 5 و قيمته x هنا قمنا بتعريف متغير إسمه
    int x = 5;
    
    // x و قمنا بتعريفه كمؤشر للمتغير y هنا قمنا بتعريف متغير إسمه
    // أصبحا يشيران لنفس القيمة المخزنة في الذاكرة y و المتغير x إذاً المتغير
    int *y = &x;

    // x و التي هي نفسها قيمة المتغير y هنا قمنا بطباعة القيمة الموضوعة في المتغير
    cout << "y contain x value which is: " << *y;

    return 0;
}

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

y contain x value which is: 5

ستتعرف على المؤشرات و كيفية التعامل معهم بشكل مفصل لاحقاً في الدورة; و يكفي أن تفهم معنى كلمة مؤشر.

العامل , (Comma)

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


مثال

Main.cpp
#include <iostream>
using namespace std;

int main()
{
    // x هنا قمنا بتعريف متغير إسمه
    int x;
    
    // s تساوي 1, ثم أضفنا عليها 2, ثم ضربناها بالرقم 5. و في النهاية وضعنا الناتج في المتغير x هنا قمنا بجعل قيمة
    int s = (x = 1, x += 2, x *= 5);

    // s هنا قمنا بطباعة قيمة المتغير
    cout << "s = ((1) + 2) * 5 = " << s;

    return 0;
}

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

s = ((1) + 2) * 5 = 15