operator.dspworld.ir
عملگرها در زبان C

Dspworld.ir

عملگرها در زبان C

زمان مطالعه: 11 دقیقه
در قسمت دوم آموزش برنامه نویسی C قصد دارم در مورد عملگرها و نقش آنها در برنامه نویسی C صحبت کنم. این سلسله آموزشها پایه و اساس کار با هر پردازنده از جمله پردازنده های سیگنال دیجیتال (DSP) میباشد.

فهرست مطالب

عملوند چیست؟

قبل از اینکه عملگرها را یاد بگیریم، باید بدانیم که عملوندها چه هستند.

عملوندها مقادیر یا متغیرهایی هستند که در برنامه نویسی کامپیوتری برای انجام عملیات استفاده می شوند. آنها می توانند اعداد، رشته ها یا انواع داده های دیگر باشند. به عنوان مثال، در “5 + 32” “5” و “32” عملوند هستند. به جای این اعداد می توانیم از متغیرها نیز استفاده کنیم.

اپراتورها در زبان C چه هستند؟

عملگرها در زبان C نمادهایی هستند که عملیات خاصی را روی عملوندها انجام می دهند. آنها برای دستکاری داده ها و انجام محاسبات در یک برنامه C استفاده می شوند. به عبارت ساده، هر زمان که عملیاتی را در داده ها انجام می دهید، باید از نمادهایی استفاده کنید که به عنوان عملگر شناخته می شوند.

مثال :

							
					;sum = a + b 				
			

 در مثال بالا عبارات a و b عملوند و عبارت + از نوع عملگر یا اپراتور میباشد.

 

تقدم و همبستگی عملگرها چیست؟

تقدم عملگرها به ترتیبی که عملگرهای مختلف در یک عبارت ارزیابی می شوند اشاره دارد و توالی انجام عملیات را تعیین می کند. اپراتورهایی که اولویت بالاتری دارند قبل از آنهایی که اولویت کمتری دارند ارزیابی می شوند.

قوانین تقدم دقیق ممکن است بسته به زبان برنامه نویسی مورد استفاده متفاوت باشد. درک تقدم عملگرها برای اطمینان از ارزیابی صحیح عبارات مهم است.

ارتباط عملگرها به ترتیبی که عملگرهای دارای اولویت یکسان ارزیابی می شوند اشاره دارد. در زبان‌های برنامه‌نویسی، عملگرها می‌توانند همبستگی چپ یا راست ارتباطی باشند. عملگرهای ارتباطی چپ از چپ به راست ارزیابی می شوند، در حالی که عملگرهای ارتباطی راست از راست به چپ ارزیابی می شوند.

ارتباط یک عملگر تعیین می کند که چگونه عبارات حاوی چند عملگر ارزیابی شوند. درک ارتباط عملگرها برای نوشتن کد صحیح و کارآمد مهم است.

استفاده از اولویت و ارتباط عملگر :

تقدم  و انجمن دو موردی هستند که در عملگرها در شرایطی که برای ارزیابی ترتیب زمانی پرانتز وجود ندارند استفاده می شود.

در ریاضیات از قانون BODMAS پیروی می کنیم. به طور مشابه، در برنامه نویسی C نیز قانون تقدم عملگر و قانون انجمن اجرا میگردد.

 
							
					;int x = 4 + 3 * 2				
			

نتیجه عبارت بالا به جای 14 عدد 10 است. از آنجایی که عملگر * اولویت بیشتری نسبت به عملگر + دارد. بنابراین عملگر + بعد از عملگر * ارزیابی می شود.

در جدول زیر میتوانید نحوه محاسبه الویت عملگرها را مشاهده نمایید. این الویتها بسیار با اهمیت هستند و اگر هنگام کد نویسی به درستی مورد استفاده قرار نگیرند باعث خواهد شد عبارت نهایی با آنچه که انتظار داریم متفاوت باشد و کد ما دچار خطای منطقی شود.

الویت عملگر کارکرد وابستگی
1 () Parentheses Left to right
1 [] Array element reference Left to right
1 -> Member access via pointer Left to right
1 . Member access via object name Left to right
1 ++ Postfix increment Left to right
1 -- Postfix decrement Left to right
1 ! Logical NOT operator Left to right
1 ~ Bitwise complement operator Left to right
1 + Unary plus operator Left to right
2 Unary minus operator Right to left
2 ++ Prefix Increment Right to left
2 -- Prefix Decrement Right to left
2 * Indirection operator Right to left
2 ()sizeof Size of operator Right to left
2 (type) Typecast Right to left
3 *. Dereference operator Left to right
3 *<- Dereference operator Left to right
4 * Multiply Left to right
4 / Divide Left to right
4 % Modulus Left to right
5 + Binary addition Left to right
5 Binary subtraction Left to right
6 >> Bitwise left shift Left to right
6 << Bitwise right shift Left to right
7 > Less than Left to right
7 => Less than or equal to Left to right
7 < Greater than Left to right
7 =< Greater than or equal to Left to right
8 == Equal to Left to right
8 =! Not equal to Left to right
9 & Bitwise AND Left to right
10 ^ Bitwise XOR Left to right
11 | Bitwise OR Left to right
12 && Logical AND Left to right
13 || Logical OR Left to right
14 😕 Conditional operator Right to left
15 = Simple assignment Right to left
15 =* Assign product Right to left
15 =! Assign bitwise complement Right to left
15 =/ Assign quotient Right to left
15 =% Assign remainder Right to left
15 =+ Assign sum Right to left
15 =- Assign difference Right to left
15 =& Assign bitwise AND Right to left
15 =^ Assign bitwise XOR Right to left
15 =| Assign bitwise OR Right to left
15 =>> Assign bitwise left shift Right to left
15 =<< Assign bitwise right shift Right to left

توجه: عملگرهای ++/ -- بعد از متغیر دارای اولویت بالاتری نسبت به عملگرهای ++ / -- قبل از متغییر هستند.

انواع عملگرها در زبان C :

در زبان برنامه نویسی C  سه نوع عملگر داریم که این سه عملگر به هفت نوع عملگر فرعی تقسیم بندی شده است که در ادامه با آن ها آشنا می شویم.

 

اپراتور تکی :

اپراتوری است که برای کار/عمل کردن به یک عملوند نیاز دارد. سه نوع عملگر تکی موجود است.

عملگر افزایش (++)،

عملگر کاهش (–)،

 .sizeof() عملگر 

عملگرهای افزایش و کاهش را نمی توان در اعداد ثابت استفاده کرد. فقط با متغیرها استفاده می شود. پس بیایید جزئیات را یکی یکی ببینیم.

عملگر افزایشی (++) :

عملگر افزایشی برای افزایش یا اضافه کردن مقدار 1 استفاده می شود. دو نوع عمگر افزایشی وجود دارد.

پیش افزایشی و

پس افزایشی

عملگر پیش از افزایش (X++) :

وقتی از عملگر افزایشی قبل از عملوند استفاده می کنیم، پیش افزایش نامیده می شود. (یعنی ابتدا افزایش اتفاق می افتد و سپس مقدار به آن اختصاص می یابد). به عنوان مثال

 
				
					++x -> 1+x;
				
			
				
					int main()
{
    x = ++x //pre-increment
    //statements
}
				
			

مثال :

				
					#include <stdio.h>
int main()
{
    int x=5,y;
    y = ++x;
    printf("x = %d\ny = %d",y,x);
    return 0;
}
				
			

خروجی :

				
					x = 6
y = 6
				
			

توضیح کد: در این برنامه در داخل تابع main مقدار 5 را به متغیر 'x'  اختصاص داده ام، سپس مقدار 5 ابتدا با X++ افزایش می یابد که برابر با  1 + 5 = 6 است.  اکنون مقدار 6 به متغیر 'x' اختصاص داده می شود و نتیجه ذخیره شده در متغیر 'y' قرار میگیرد که آن هم برابر 6 میباشد.

عملگر پس افزایشی (++X) :

وقتی بعد از عملوند از عملگر افزایشی استفاده می کنیم، به آن پس افزایش می گویند. (یعنی ابتدا مقدار به آن اختصاص داده می شود و سپس افزایش اتفاق می افتد).

به عنوان مثال

				
					X++ -> 1+x;
				
			
				
					int main()
{
    x = x++; //post-increment
    //statements
}
				
			

مثال :

				
					#include <stdio.h>
int main()
{
    int x=5,y;
    y = x++;
    printf("x = %d\ny = %d",y,x);
    
    return 0;
}
				
			

خروجی :

				
					x=6
y=5

				
			

توضیح کد: در این برنامه در داخل یک main مقدار 5 را به متغیر 'x' که یک مقدار اصلی است، اختصاص داده ام، در ابتدا مقدار X برابر 5 میباشد و درون متغیر y قرار میگیرد و سپس مقدار متغیر x یک واحد اضافه میشد در دستور بعد که وظیفه چاپ مقادیر را دارد مقدار x برابر 6 و مقدار y برابر با 5 خواهد بود.

عملگر کاهش (X–) :

عملگر کاهش برای کاهش یا تفریق مقدار 1 استفاده می شود. دو نوع وجود دارد.

پیش کاهش

پس از کاهش

وقتی از عملگر کاهش قبل از عملوند استفاده می کنیم، به آن پیش کاهش می گویند. (یعنی ابتدا کاهش اتفاق می افتد و سپس مقدار به آن اختصاص می یابد).

به عنوان مثال :

				
					--x -> 1 - x ;
				
			
				
					int main()
{
    x = --x; //pre-decrement
    //statements
}
				
			

مثال :

				
					#include <stdio.h>
int main()
{
    int x=5,y;
    y = --x;
    printf("x = %d\ny = %d",y,x);
    
    return 0;
}
				
			

خروجی :

				
					x = 4
y = 4
				
			

نکته: - در این برنامه در داخل main مقدار 5 را به متغیر 'x' که یک مقدار اصلی است اختصاص داده ام سپس مقدار 5 ابتدا با x-- کاهش می یابد که نتیجه آن 4 = 1- 5 است. پس ابتدا مقدار x یک واحد کاهش میابد و برابر 4 میشود و سپس درون متغیر y قرار میگیرد.

اپراتور پس کاهشی (–X) :

وقتی بعد از عملوند از عملگر decrement استفاده می کنیم، به آن post-decrement می گویند. (یعنی ابتدا مقدار تخصیص داده می شود و سپس کاهش اتفاق می افتد). 

به عنوان مثال :

				
					--x -> x - 1 ;
				
			
				
					int main()
{
    x = x--; //pre-decrement
    //statements
}
				
			

مثال :

				
					#include <stdio.h>
int main()
{
    int x=5,y;
    y = x--;
    printf("x = %d\ny = %d",y,x);
    
    return 0;
}
				
			

خروجی :

				
					x = 5
y = 4
				
			

نکته: در این برنامه در داخل یک main مقدار 5 را به متغیر 'x' اختصاص داده ام که یک مقدار اصلی است ابتدا مقدار x که برابر 5 است به متغیر y اختصاص داده میشود و سپس یک واحد از آن کم میشود در نتیجه مقدار x برابر 1 می گردد.

اپراتور ()sizeof :

عملگر ()sizeof یک عملگر یگانه است که می تواند اندازه  عملوندش را برگرداند.  عمگر ()sizeof به شکل متفاوتی عمل میکند و مقدار حافظه اختصاص داده شده به عملوند یا متغییر ورودی خود را برمیگرداند.ورودی این عملگر نوع داده میباشد به عنوان مثال char, int,float  و غیره.

فرمت مشخص کننده ()sizeof  عبارت zu%  میباشد که در برنامه زیر ذکر شده است.

				
					sizeof(condition);
				
			

در اینجا، condition می تواند یک نوع داده یا یک متغیر از هر نوع باشد. 

مثال :

				
					#include <stdio.h>
int main()
{
    printf("sizeof char = %zu\n",sizeof(char));
    printf("sizeof int = %zu\n",sizeof(int));
    printf("sizeof float = %zu\n",sizeof(float));
    printf("sizeof double = %zu",sizeof(double));
}
				
			

خروجی:

				
					sizeof char = 1
sizeof int = 4
sizeof float = 4
sizeof double = 8
				
			

عملگر () sizeof یک اپراتور وابسته به معماری سیستم است که می تواند در یک کامپایلر سیستم 32 بیتی یا 64 بیتی اجرا شود و نتیجه های متفاوتی داشته باشد.مثلا در کامپایلر avr-gcc مقدار حافظه اختصاصی به نوع داده int دو بایت میباشد. پس همیشه معماری سیستمی که قراره کد روی آن اجرا بشه و فرضیات کامپایلر رو در نظر بگیرید وگرنه ممکنه دچار اورفلو بشید یا الکی حافظه رو هدر بدید!!!

				
					#include <stdio.h>
int main()
{
    int i=20;
    char c='C';
    double d=20.52;
    float f=3.4;
    
    printf("Maximum bytes = %d",sizeof(i + c + d + f));
}
				
			

خروجی:

				
					Maximum bytes = 8
				
			

اپراتورهای باینری :

عملگرهای باینری دسته ای از عملگرها در c  هستند که برای استفاده از آنها نیاز به حداقل  دو عملوند میباشد. برای مثال (10 + 5) در نظر بگیرید. در اینجا، ’10’ و ‘5’ عملوند هستند و ‘+’ یک عملگر است. عملگرهای باینری به پنج دسته تقسیم می شود.

  • Arithmetic Operator (+,-,*,/,%)
  • Assignment Operator(=,+=,-=,*=,/=,%=)
  • Logical Operator (&&,||,!)
  • Relational Operator(<,>,<=,>=,==,!=)
  • Bitwise Operator(&,|,^,~,<<,>>)

عملگر حسابی(+,-,*,/,%) :

عملگرهای حسابی عملگرهای ویژه در زبان C هستند. فقط برای عملیات ریاضی با حداقل دو عملوند استفاده می شود.

مثال :

				
					#include <stdio.h>
int main()
{
    int a = 4,  b = 2, c;
    
    c = a + b;
    printf("a + b = %d \n",c);
    c = a - b;
    printf("a - b = %d \n",c);
    c = a * b;
    printf("a * b = %d \n",c);
    c = a / b;
    printf("a / b = %d \n",c);
    c = a % b;
    printf("a % b = %d",c);
    
    return 0;
}
				
			

خروجی:

				
					a + b = 6 
a - b = 2 
a * b = 8 
a / b = 2 
a % b = 0
				
			

اپراتور تخصیص (=,+=,-=,*=,/=,%=):

عملگرهای تخصیص نیز عملگرهای ویژه ای در زبان برنامه نویسی C هستند. برای تخصیص مقدار به یک متغیر استفاده می شود. عملوند سمت چپ یک متغیر و عملوند سمت راست عملگر انتساب یک مقدار است.

مقدار سمت راست باید از نوع داده مشابه با متغیر سمت چپ باشد، در غیر این صورت، کامپایلر خطا خواهد کرد.

مثال :

				
					#include <stdio.h>
int main()
{
    int a = 5, b;
    
    b = a;      // b is 5
    printf("b = %d\n", b);
    b += a;     // b is 10 
    printf("b = %d\n", b);
    b -= a;     // b is 5
    printf("b = %d\n", b);
    b *= a;     // b is 25
    printf("b = %d\n", b);
    b /= a;     // b is 5
    printf("b = %d\n", b);
    b %= a;     // b = 0
    printf("b = %d\n", b);
    return 0;
}
				
			

خروجی:

				
					b = 5
b = 10
b = 5
b = 25
b = 5
b = 0
				
			

عملگر/عبارات منطقی (&&،||،!):

عملگرهای منطقی برای ترکیب دو یا چند شرط استفاده می شوند، بسته به درست یا نادرست بودن عبارت، 0 —> false یا 1 —> true را برمی گرداند. معمولاً در تصمیم گیری در برنامه نویسی C استفاده می شود.

 

 فرض کنید سه مقدار a = 50، b = 10، c دارید. سپس c = a > b را اجرا کنید که نتیجه آن درست است. بنابراین، 1 در c ذخیره می شود. و اگر b = 100 باشد آنگاه نادرست خواهد بود و c دارای مقدار 0 خواهد بود. بنابراین مفهوم در این عملگر منطقی می گوید که درست یا نادرست بودن آن به a > b بستگی دارد.

به همین ترتیب، در چنین مواقعی، شرایطی وجود خواهد داشت که شما بیش از یک شرط دارید و در آن زمان می توانید از یکی از عملگرهای  &&،|| استفاده نمایید.

انواع عملگر/بیان منطقی:

عملگر و منطقی

عملگر منطقی OR

عملگر منطقی NOT

اپراتور اتصال کوتاه

جدول درستی عملگر &&

عملگر Logical AND فقط در صورتی درست برمی گردد که همه شرایط درست باشند.

A&&B
B
A
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE

جدول درستی عملگر ||

عملگر Logical OR فقط در صورتی درست برمی گردد که  حداقل یکی از شرایط درست باشد.

A||B
B
A
TRUE
FALSE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE

جدول درستی عملگر !

عملگر منطقی NOT فقط اگر شرط نادرست باشد، true را برمی گرداند.

B
A
FALSE
TRUE
TRUE
FALSE

مثالی از عملگر منطقی AND (&&).

				
					#include <stdio.h>
int main()
{
    int x = 20, y = 10, z = 15;
    if(x < y && y < z)
    
    {
        printf(" X is not greater number");
    }
    else
    {
        printf(" X is a greater number");

    }
    
    return 0;
}
				
			

خروجی:

				
					 X is a greater number

				
			

مثالی از عملگر منطقی OR (||):

				
					#include <stdio.h>
int main()
{
    int a = 20, b = 10, c = 15;
    if(c > a || c > b)
    
    {
        printf(" C is a greater number");        

    }
    else
    {
        printf("C is neither a smaller nor greater number");
    }
    
    return 0;
}
				
			
				
					 C is a greater number

				
			

مثالی از عملگر منطقی NOT (!):

				
					#include <stdio.h>
int main()
{
    int i = 20, j = 10;
    if(i != j )
    
    {
        printf("i is not equal to j");
    }
    else
    {
        printf("i is equal to j"); 
    }
    
    return 0;
}
				
			

خروجی :

				
					i is not equal to j

				
			

اپراتورهای اتصال کوتاه / عبارات (&&، ||) :

اتصال کوتاه روشی برای ارزیابی است که توسط کامپایلر برای بهینه سازی کد استفاده می شود. زیرا اجرا شدن برنامه در زمان کمتر و سرعت بیشتر گزینه مطلوب تری میباشد.، بنابراین برای کاهش پیچیدگی زمانی در یک برنامه برای ارزیابی عبارات شرطی کامپایلر از اتصال کوتاه (Short Circuit)   استفاده می کند. این عملگر اتصال کوتاه یا عبارت اتصال کوتاه در این مقاله، به عنوان عملگرهای اتصال کوتاه منطقی یا عبارت اتصال کوتاه منطقی نیز در زبان برنامه نویسی C شناخته می شود.

ارزیابی اتصال کوتاه برای AND منطقی (&&) :

اگر شرط اول نادرست باشد، کامپایلر شرط بعدی را اجرا نمی کند، فقط در شرایط اول یک اتصال کوتاه رخ خواهد داد.

مثالی از ارزیابی اتصال کوتاه برای AND منطقی (&&)

				
					#include <stdio.h>
int main()
{
    int a = 10, b = 5, c;
    
    c = ((++a > 15) && (++b > 2));
    printf("A = %d\nB = %d\nC = %d",a,b,c);
    
    return 0;
}
				
			

خروجی :

				
					A = 11
B = 5
C = 0

				
			

توجه: در اینجا من دو متغیر a = 10، b = 2 را در نظر گرفته ام و دو شرط را با اتصال کوتاه منطقی بررسی کردم c = (++a>15 && ++b>2)، بنابراین اکنون اگر شرط اول طبق عملگر اتصال کوتاه و منطقی نادرست شود، کامپایلر برای بررسی شرایط بعدی حرکت نمی‌کند، بلکه شرط دوم ممکن است درست یا نادرست باشد. بعد از اولین شرط به سادگی اتصال کوتاه اتفاق میوفتد و برنامه به خط بعد میرود.

ارزیابی اتصال کوتاه برای ORمنطقی (||) :

اگر شرط اول درست باشد، کامپایلر شرط بعدی را اجرا نخواهد کرد، فقط در شرایط اول یک اتصال کوتاه خواهد بود.

نمونه ای از ارزیابی اتصال کوتاه برای OR منطقی (||) :

				
					#include <stdio.h>
int main()
{
    int a = 10, b = 5, c;
    
    c = (++a > 5 || ++b > 10);
    printf("A = %d\nB = %d\nC = %d",a,b,c);
    
    return 0;
}
				
			

خروجی :

				
					A = 11
B = 6
C = 1
				
			

نکته: به همین ترتیب در اینجا نیز همان دو متغیر a = 10 و b = 2 را گرفته ام و دو شرط را با اتصال کوتاه منطقی بررسی میکنم c = (++a>5 || ++b>10) بنابراین اگر شرط اول مطابق با عملگر OR اتصال کوتاه منطقی درست شود، کامپایلر برای بررسی شرط بعدی نمی رود. اما اگر چندین شرط وجود داشته باشد و از این رو، اگر شرط اول نادرست شود، کامپایلر برای بررسی شرط دیگر حرکت می کند تا زمانی که یک شرط درست باشد، اگر کامپایلر یک شرط درست را دریافت کند، به سادگی یک اتصال کوتاه خواهد داشت. ، و سایر شرط ها چک نخواهد شد.

اپراتور رابطه ای (<,>,<=,>=,==,!=) :


یک عملگر رابطه ای برای مقایسه مقادیر حسابی، منطقی و کاراکتری دو عملوند استفاده می شود. اگر شرط درست باشد، 1 را برمی گرداند. اگر رابطه نادرست باشد، 0 را برمی گرداند.

مثال :

				
					#include <stdio.h>
int main()
{
    int a = 5, b = 3;

    printf("%d == %d\t = %d\n", a, b, a == b);
    printf("%d > %d\t = %d\n", a, b, a > b);
    printf("%d < %d\t = %d\n", a, b, a < b);
    printf("%d != %d\t = %d\n", a, b, a != b);
    printf("%d >= %d\t = %d\n", a, b, a >= b);
    printf("%d <= %d\t = %d\n", a, b, a <= b);
    
    return 0;
}
				
			

خروجی :

				
					5 == 3	 = 0
5 > 3	 = 1
5 < 3	 = 0
5 != 3	 = 1
5 >= 3	 = 1
5 <= 3	 = 0
				
			

عملگر بیتی (&,|,^,~,<<,>>):


در آموزش بعدی به این عملگرهای Bitwise پرداخته ایم.

اپراتور سه تایی

عملگر سه تایی را عملگر شرطی نیز می نامند که با سه عملوند Expression1 Expression2 Expression3 یا مقدار واقعی یا مقدار نادرست کار می کند و به صورت ?: نشان داده می شود.

اپراتور مشروط

هر زمان که یک برنامه طبق یک دستور خاص به صورت شرطی اجرا شود، از عملگرهای شرطی استفاده می کنیم. اجازه بدین مثالی را مطرح کنیم. فرض کنید Expression1 شرطی است که باید ارزیابی شود. اگر شرط (Expression1) درست باشد، آن را اجرا می کند و نتیجه Expression2 را برمی گرداند، در غیر این صورت اگر شرط (Expression1) نادرست باشد، آن را اجرا کرده و نتیجه Expression3 را برمی گرداند.

مثال:

Condition ? True : False

max = num1 > num2 ? num1 : num2;

				
					#include <stdio.h>
int main()
{
    int num1,num2;
    printf("Enter two numbers:- ");
    scanf("%d %d",&num1,&num2);
    
    printf("The largest number is %d",(num1 > numm2 ? num1 : num2));
    return 0;
}
				
			

خروجی :

				
					Enter two numbers:- 8 9
The largest number is 9
				
			

ما همچنین اپراتورهای ویژه زیر را نیز در دسته عملگرها در زبان C داریم.

عملگر رشته سازی (#)
اپراتورهای چسباندن توکن (##)

که در قسمتهای آینده به انها خواهیم پرداخت.

 

سوالات متداول :

  • عملگرها درزبان C چه کاربردی دارند؟

    هر زمان که عملیاتی را روی داده ها انجام می دهید، باید از نمادهایی استفاده کنید که به عنوان عملگر شناخته می شوند. نماد در یک یا چند عملوند عمل می کند یا یک عملیات منطقی خاص را روی یک متغیر یا مقدار در زبان های C انجام می دهد، به عنوان مثال: (+، -، *، /، %). به داده هایی که برای کارکرد استفاده می کنیم عملوند می گویند.

  • اولویت و ارتباط عملگرها در C چیست؟

    تقدم عملگرها در زبان C نشان دهنده ترتیبی است که عملگرها در شرایط درگیر خواهند شد. از سوی دیگر، انجمنی بودن ترتیبی را تعریف می کند که در آن عملگرهای دارای اولویت یکسان در شرایط یکسان ارزیابی می شوند. همچنین، انجمنی بودن می‌تواند از راست به چپ یا چپ به راست رخ دهد.

  • استفاده از اولویت و ارتباط اپراتور چه کاربردی دارد؟

    Precedence و Associativity دو موردی هستند که در عملگرها در شرایطی برای ارزیابی ترتیب شرط زمانی که پرانتز وجود ندارند استفاده می شود.

  • انواع اپراتورها چیست؟

    اپراتور یگانه یا تکی اپراتور باینری اپراتور سه تایی

  • چه زمانی می توانیم از عملگر pre-increment به جای عملگر post increment در C استفاده کنیم؟

    در C، عملگر pre-increment (++i) زمانی استفاده می شود که بخواهیم مقدار یک متغیر را قبل از استفاده در یک عبارت افزایش دهیم. از طرف دیگر، عملگر post-increment (i++) زمانی استفاده می شود که بخواهیم مقدار یک متغیر را پس از استفاده در یک عبارت افزایش دهیم.

  • اپراتورهای اتصال کوتاه در C چیست؟

    عملگرهای اتصال کوتاه در C فقط زمانی برای ارزیابی عملوند دوم استفاده می شوند که نتیجه عملوند اول برای تعیین نتیجه نهایی عبارت کافی نباشد. این بدان معنی است که اگر عملوند اول نتیجه عبارت را تعیین کند، عملوند دوم ارزیابی نمی شود و در نتیجه کارایی بهبود می یابد. دو عملگر اتصال کوتاه در C وجود دارد: عملگر AND منطقی (`&&`) و عملگر منطقی OR (`||`).

  • عملگر شرطی در C چیست؟

    عملگر شرطی در C یک عملگر سه تایی است که امکان ارزیابی شرطی عبارات را فراهم می کند. به سه عملوند نیاز دارد: یک شرط، یک نتیجه زمانی که شرط درست است، و یک نتیجه زمانی که شرط نادرست است. اگر شرط درست باشد، عبارت اول ارزیابی می شود. در غیر این صورت، عبارت دوم ارزیابی می شود. معمولاً به عنوان روشی کوتاه برای نوشتن عبارات ساده if-else در C استفاده می شود.