به توابع زیر دقت کنید (x شرط توابع است):
int conditionalFunction1(int x, int a, int b)
{
return x ? a : b;
}
int conditionalFunction2(int x, int a, int b)
{
return !!x * a + !x * b;
}
تابع conditionalFunction1 دارای 3 پارامتر میباشد. این تابع با استفاده از (?:) Conditional Operator که بنام Ternary Operator نیز شناخته میشود، مقدار x را بررسی میکند. اگر x عددی غیر صفر باشد، مقدار خروجی برابر با a میباشد؛ و در غیر این صورت (اگر x صفر باشد)، مقدار خروجی برابر با b میباشد.
با کمی دقت در تابع conditionalFunction2 متوجه میشوید که بدون استفاده از هرگونه جملهٔ شرطی، همان مقدار بازگشتی بدست میآید. توجه داشته باشید که مقدارهای NOT x (!x) و NOT NOT x (!!x) همواره برابر با صفر یا یک است. با این نکته براحتی بنحوهٔ کار کردن این تابع پی میبرید. تابع conditionalFunction2 همان تابع conditionalFunction1 است اما به زبانی دیگر.