ماهي العوامل التي تستخدم لإعطاء قيم للمتغيرات (Assignment Operators) في C++
إسم العامل | رمزه | مثال | شرح الكود |
---|---|---|---|
Basic Assignment | = | a = b | ضع قيمة b في a . |
Add AND Assignment | += | a += b | أضف قيمة a على قيمة b و خزن الناتج في a |
Susbtract AND Assignment | -= | a -= b | أنقص قيمة a من قيمة b و خزن الناتج في a |
Multiply AND Assignment | *= | a *= b | أضرب قيمة a بقيمة b و خزن الناتج في a |
Divide AND Assignment | /= | a /= b | أقسم قيمة a على قيمة b و خزن الناتج في a |
Modulo AND Assignment | %= | a %= b | أقسم قيمة a على قيمة b و خزن آخر رقم يبقى من عملية القسمة في a |
Left shift AND Assignment | <<= | a <<= 2 | أزح آخر إثنين bits و ضعهم في الأول ثم خزن الناتج في a |
Right shift AND Assignment | >>= | a >>= 2 | أزح أول اثنين bits و ضعهم في الآخر ثم خزن الناتج في a |
Bitwise AND Assignment | &= | a &= b | أحسب ناتج جمع الـ bits المشتركة بين a و b و خزن الناتج في a |
Bitwise exclusive OR and Assignment | ^= | a ^= b | أحسب ناتج جمع الـ bits الغير مشتركة بين a و b و خزن الناتج في a |
Bitwise inexclusive OR and Assignment | |= | a |= b | أحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين a و b و خزن الناتج في a |
شرح العوامل التي تستخدم لإعطاء قيم للمتغيرات في C++
العامل =
(Basic Assign) في C++
العامل =
يستخدم لإعطاء قيمة لمتغير.
مثال
#include <iostream> using namespace std; int main() { int a = 10; cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 10
العامل +=
(Add and Assign) في C++
العامل +=
يستخدم لإضافة قيمة ما على قيمة المتغير بكود أقل.
مثال
#include <iostream> using namespace std; int main() { int a = 10; int b = 20; a += b; // a = a + b = 10 + 20 = 30 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 30
العامل -=
(Susbtract and Assign) في C++
العامل -=
يستخدم لطرح قيمة ما من قيمة المتغير بكود أقل.
مثال
#include <iostream> using namespace std; int main() { int a = 10; int b = 20; a -= b; // a = a - b = 10 - 20 = -10 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = -10
العامل *=
(Multiply and Assign) في C++
العامل *=
يستخدم لضرب قيمة المتغير بقيمة ما بكود أقل.
مثال
#include <iostream> using namespace std; int main() { int a = 10; int b = 20; a *= b; // a = a * b = 10 * 20 = 200 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 200
العامل /=
(Divide and Assign) في C++
العامل /=
يستخدم لقسم قيمة المتغير على قيمة ما بكود أقل.
مثال
#include <iostream> using namespace std; int main() { int a = 100; int b = 20; a /= b; // a = a / b = 100 / 20 = 5 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 5
العامل %=
(Modulo and Assign) في C++
العامل %=
يستخدم لتخزين الباقي من قسمة قيمة المتغير على قيمة ما بكود أقل.
مثال
#include <iostream> using namespace std; int main() { int a = 10; int b = 7; a %= b; // a = a % b = 10 % 7 = 3 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 3
العامل <<=
(Left shift and Assign) في C++
في المثال التالي, العامل <<=
يعني إمسح bits من ناحية اليسار ثم بدل كل bit تم مسحها منهم بصفر و ضعهم من ناحية اليمين ثم ضع الناتج في المتغير من جديد.
مثال
#include <iostream> using namespace std; int main() { int a = 10; a <<= 2; // a = a << 2 = 00000000000000000000000000001010 << 2 = 00000000000000000000000000101000 = 40 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 40
العامل >>=
(Right shift and Assign) في C++
في المثال التالي, العامل >>=
يعني إمسح bits من ناحية اليمين ثم بدل كل bit تم مسحها منهم بصفر و ضعهم من ناحية اليسار ثم ضع الناتج في المتغير من جديد.
مثال
#include <iostream> using namespace std; int main() { int a = 10; a >>= 2; // a = a >> 2 = 00000000000000000000000000001010 >> 2 = 00000000000000000000000000000010 = 2 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 2
العامل &=
(Bitwise and Assign) في C++
العامل &=
يعني أحسب ناتج جمع الـ bits المشتركة بين المتغير a
و المتغير b
ثم خزن الناتج في المتغير a
.
مثال
#include <iostream> using namespace std; int main() { int a = 10; int b = 75; a &= b; // a = a & b = 00000000000000000000000000001010 & 00000000000000000000000001001011 = 00000000000000000000000000001010 = 10 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 10
العامل |=
(Bitwise exclusive OR and Assign) في C++
العامل |=
يعني أحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين المتغير a
و المتغير b
ثم خزن الناتج في المتغير a
.
مثال
#include <iostream> using namespace std; int main() { int a = 10; int b = 75; a |= b; // a = a | b = 00000000000000000000000000001010 | 00000000000000000000000001001011 = 00000000000000000000000001001011 = 75 cout << "a = " << a; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
a = 75
عوامل أخرى مهمة جدا في C++
إسم العامل | رمزه | إستخدامه |
---|---|---|
Conditional | ?: | يطلق عليه أيضاً إسم Ternary Operator لأنه يأخذ ثلاث عناصر ليعمل. يمكن إستعماله بدل جمل الشرط if و else في حال كنت تريد إعطاء قيمة للمتغير. |
Size of | sizeof() | يستخدم لمعرفة حجم المساحة المخصصة في الذاكرة لأي شيء يتم تمريره بين القوسين. الرقم الذي يتم إرجاعه يمثل الحجم بالـ Byte. |
Address | & | يستخدم لمعرفة عنوان المساحة المخصصة في الذاكرة للشيء الذي يتم وضعه بعده مباشرةً. العنوان الذي يتم إرجاعه يتم إرجاعه بشكل Hexadecimal. |
Pointer | * | يستخدم لوضع مؤشر لشيء تم تعريفه مما يجعلك قادر على الوصول إليه بشكل مباشر من أي مكان تريد من خلال عنوانه في الذاكرة. |
Comma | , | تستخدم الفاصلة لتنفيذ أكثر من عملية حسابية و من ثم إسناد قيمتها كلها في متغير واحد. مع الإشارة إلى أنه يجب وضع فاصلة بين كل عملتين تفوم بوضعهما. |
عوامل أخرى مهمة في C++
العامل ?:
(Conditional Operator) في C++
العامل ?:
يقال له Conditional أو Ternary Operator لأنه يأخذ ثلاث عناصر ليعمل.
يمكن إستعماله بدل جمل الشرط if
و else
في حال كنت تريد إعطاء قيمة للمتغير.
بنا العامل ?:
(Conditional Operator) في C++
expression
: يمثل الشرط الذي نضعه.value if true
: تمثل القيمة التي ستعطى للمتغيرx
إذا تحقق الشرط نضعها بعد الرمز?
.value if false
: تمثل القيمة التي ستعطى للمتغيرx
إذا لم يتحقق الشرط نضعها بعد الرمز:
.
المثال الأول
#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
.
المثال الثاني
#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) في C++
يستخدم لمعرفة حجم المساحة المخصصة في الذاكرة لأي شيء يتم تمريره بين القوسين.
الرقم الذي يتم إرجاعه يمثل الحجم بالـ Byte.
المثال الأول
#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
المثال الثاني
#include <iostream> using namespace std; int main() { // int و نوعه x هنا قمنا بتعريف متغير إسمه int x = 5; // x هنا قمنا بطباعة الحجم الذي تم حجزه في الذاكرة من أجل المتغير cout << "Size of x in memory: " << sizeof(char) << " Byte\n"; return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
Size of x in memory: 1 Byte
العامل &
(Address) في C++
يستخدم لمعرفة عنوان المساحة المخصصة في الذاكرة للشيء الذي يتم وضعه بعده مباشرةً.
مثال
#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) في C++
يستخدم لوضع مؤشر للشيء عند تعريفه مما يجعلك قادر على الوصول إليه بشكل مباشر من أي مكان تريد من خلال عنوانه في الذاكرة.
مثال
#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) في C++
تستخدم الفاصلة لتنفيذ أكثر من عملية حسابية و من ثم إسناد قيمتها كلها في متغير واحد.
مع الإشارة إلى أنه يجب وضع فاصلة بين كل عملتين تفوم بوضعهما.
مثال
#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