مقدمة لمشغلي C وأسبقية المشغل
تقدم لنا C مجموعة متنوعة من المشغلين يمكننا استخدامها للعمل على البيانات.
على وجه الخصوص ، يمكننا تحديد مجموعات مختلفة من المشغلين:
- العمليات الحسابية
- عوامل المقارنة
- العوامل المنطقية
- عوامل التخصيص المركبة
- عوامل البت
- المؤشرالعاملين
- مشغلي الهيكل
- عوامل متنوعة
في منشور المدونة هذا ، سأفصل كل منهم ، باستخدام متغيرين تخيليينa
وb
كأمثلة.
أنا أبقي مشغلي البتات ، ومشغلي البنية ، ومشغلي المؤشرات خارج هذه القائمة ، حيث سأخصص لهم منشور مدونة معين.
العمليات الحسابية
في مجموعة الماكرو هذه ، سأفصل بين العوامل الثنائية والعوامل الأحادية.
تعمل العوامل الثنائية باستخدام معاملين:
المشغل أو العامل | اسم | مثال |
---|---|---|
= |
مهمة | a = b |
+ |
إضافة | a + b |
- |
الطرح | a - b |
* |
عمليه الضرب | a * b |
/ |
قسم | a / b |
% |
مودولو | a % b |
تأخذ العوامل الأحادية معاملاً واحدًا فقط:
المشغل أو العامل | اسم | مثال |
---|---|---|
+ |
أحادي زائد | +a |
- |
أحادي ناقص | -a |
++ |
زيادة راتب | a++ أو++a |
-- |
إنقاص | a-- أو--a |
الفرق بينa++
و++a
هل هذاa++
يزيدa
متغير بعد استخدامه.++a
يزيدa
متغير قبل استخدامه.
على سبيل المثال:
int a = 2;
int b;
b = a++ /* b is 2, a is 3 */
b = ++a /* b is 4, a is 4 */
الأمر نفسه ينطبق على عامل التناقص.
عوامل المقارنة
المشغل أو العامل | اسم | مثال |
---|---|---|
== |
عامل تشغيل متساوي | a == b |
!= |
عامل لا يساوي | a != b |
> |
أكبر من | a > b |
< |
أقل من | a < b |
>= |
أكبر من أو يساوي | a >= b |
<= |
اقل او يساوي | a <= b |
العوامل المنطقية
!
NOT (مثال:!a
)&&
و (مثال:a && b
)||
أو (مثال:a || b
)
هذه العوامل رائعة عند العمل بقيم منطقية.
عوامل التخصيص المركبة
هذه العوامل مفيدة لإجراء مهمة وفي نفس الوقت إجراء عملية حسابية:
المشغل أو العامل | اسم | مثال |
---|---|---|
+= |
مهمة الإضافة | a += b |
-= |
احالة الطرح | a -= b |
*= |
مهمة الضرب | a *= b |
/= |
مهمة التقسيم | a /= b |
%= |
مهمة Modulo | a %= b |
عوامل تشغيل متنوعة
العامل الثلاثي
العامل الثلاثي هو العامل الوحيد فيجيعمل مع 3 معاملات ، وهي طريقة قصيرة للتعبير عن الشرطية.
هكذا تبدو:
<condition> ? <expression> : <expression>
مثال:
a ? b : c
لوa
يتم تقييمه إلىtrue
، ثمb
يتم تنفيذ البيان ، وإلاc
يكون.
يعتبر العامل الثلاثي من الناحية الوظيفية هو نفسه الشرطي if / else ، إلا أنه أقصر للتعبير عنه ويمكن تضمينه في تعبير.
حجم
الsizeof
يُرجع عامل التشغيل حجم المعامل الذي تمرره. يمكنك تمرير متغير أو حتى نوع.
استخدام المثال:
#include <stdio.h>
int main(void) {
int age = 37;
printf("%ld\n", sizeof(age));
printf("%ld", sizeof(int));
}
أسبقية المشغل
مع كل تلك العوامل (وأكثر من ذلك ، والتي لم أقم بتغطيتها في هذا المنشور ، بما في ذلك مشغلي أحاديات البنية ومشغلي المؤشرات) ، يجب علينا الانتباه عند استخدامها معًا في تعبير واحد.
افترض أن لدينا هذه العملية:
int a = 2;
int b = 4;
int c = b + a * a / b - a;
ما هي قيمةc
؟ هل نحصل على الجمع قبل الضرب والقسمة؟
هناك مجموعة من القواعد التي تساعدنا في حل هذا اللغز.
بالترتيب من أقل أسبقية إلى أسبقية ، لدينا:
- ال
=
مهمة تشغيل - ال
+
و-
الثنائيةالعاملين - ال
*
و/
العاملين - ال
+
و-
عوامل أحادية
لدى المشغلين أيضًا قاعدة ترابطية ، والتي تكون دائمًا من اليسار إلى اليمين باستثناء المشغلين الأحاديين والتعيين.
في:
int c = b + a * a / b - a;
ننفذ أولاa * a / b
، والتي يمكن الفصل بينها نظرًا لكونها من اليسار إلى اليمينa * a
والنتيجة/ b
:2 * 2 = 4
و4 / 4 = 1
.
ثم يمكننا إجراء الجمع والطرح: 4 + 1 - 2. قيمةc
يكون3
.
ومع ذلك ، في جميع الحالات ، أود التأكد من أنك تدرك أنه يمكنك استخدام الأقواس لتسهيل قراءة أي تعبير مشابه وفهمه.
الأقواس لها أولوية أعلى على أي شيء آخر.
يمكن إعادة كتابة تعبير المثال أعلاه على النحو التالي:
int c = b + ((a * a) / b) - a;
ولا يتعين علينا التفكير في الأمر كثيرًا.
تحميل مجانيكتيب C
المزيد من دروس clang:
- مقدمة في لغة البرمجة سي
- ج ـ المتغيرات والأنواع
- ثوابت C
- عوامل C
- C الشرطية
- كيفية التعامل مع الحلقات في لغة سي
- مقدمة إلى C Arrays
- كيفية تحديد طول المصفوفة في لغة سي
- مقدمة إلى سلاسل سي
- كيفية إيجاد طول سلسلة في C
- مقدمة لمؤشرات سي
- التكرار خلال مصفوفة باستخدام C
- القيم المنطقية في لغة C.
- مقدمة في وظائف سي
- كيفية استخدام NULL في لغة C.
- مفاهيم I / O الأساسية في C
- علامات الاقتباس المزدوجة مقابل الاقتباسات الفردية في لغة C.
- كيفية إرجاع سلسلة من دالة C.
- كيفية حل تحذير وظيفة المكتبة المعلنة ضمنيًا في لغة سي
- كيفية التحقق من قيمة الحرف في C.
- كيفية طباعة النسبة المئوية باستخدام `printf ()` في لغة سي
- محددات التحويل ومعدلاته
- كيفية الوصول إلى معلمات سطر الأوامر في C
- نطاق المتغيرات في C
- هل يمكنك عمل وظائف متداخلة في لغة C؟
- المتغيرات الثابتة في C
- المتغيرات العامة ج
- الكلمة الأساسية typedef في C
- ج الأنواع المعدودة
- هياكل ج
- ملفات رأس C
- المعالج سي