یکی از انواع دستورات کنترلی موجود در زبان ++C دستور if-else می باشد.معمول ترین نوع ساختار تصمیم گیری نیز می باشد. یک دستور if می گوید “اگر شرطی برقرار است کد معینی را انجام بده”. دستور if-else به دو شکل می تواند باشد: همراه با else یا بدون آن.

if(expression
{
statement
}

یا

if(expression)
{
statement
}
else
{
statement
}

بدنبال کلمه if یک پرانتز می آید که عبارت شرط در آن قرار دارد و یک مقدار بولین false یا true تولید می کند (در C به صورت صفر و غیر صفر ارزیابی می شود). با درست و غلط بودن عبارت شرطی مسیر اجرا تعیین می شود. اگر درست باشد دستور بعد از if اجرا می شود. اگر else وجود داشته باشد در صورت برقرار نبودن شرط دستور بعد از else اجرا می شود.
مثال. شرط ساده.

if(age==18)
{
;” cout <<“Yahoo…. You old enough to drive!n
}

مثال. شرط کامل:

#<include <iostream

int main()
{
;” : cout << “Enter your age
; int age
;  cin >> age
( if(age < 20
{
;” cout << “You are still young!n
}
else
;” cout << “You are not so young anymore.n
}

ممکن است دستور if-else بدون محصور شدن در آکولاد بیاید. آکولاد محدوده بلاک کد را معین می کند. اگر بلاک کد تنها شامل یک دستور باشد کامپایلر فرض می کند اولین جمله بعد از if (یا بعد از else) بلاک کد است که باید اجرا شود.
مثال. در شرط زیر وقتی شرط برقرار است فقط ;++y اجرا می شود. خط دوم جز دستور if نیست و صرفنظر از درست بودن شرط همواره اجرا می شود.

if(x == 7)
y++;
z++;

شرط موردنیاز در دستور if توسط عملگرهای رابطه ای <، >، <=، >=، == و != ساخته می شود. دو یا چند شرط می توانند توسط عملگرهای منطقی &&( AND)، || (OR) و ! (NOT) با هم ترکیب شوند.

مثال. چند نمونه عبارت شرطی.

if (x>6)
if (x !=6)
if (5<j<10)
if (j== 5 && I == 6)
if (j<4 || j>10)

بخاطر داشته باشید که یک علامت مساوی عملگر انتساب است و دوتا مساوی عملگر هم ارزی به معنی “آیا مساوی است با”. a==b درست است اگر a برابر با b باشد. a=b مقدار b را به a نسبت می دهد. یکی از بیشترین خطاهائی که مبتدیان می کنند استفاده از علامت = به جای = = است. اگر تک مساوی را استفاده کنید شرط if همیشه درست است.