C程序的输出|集合55(三元运算符)

预测以下程序的输出 问题1

null

#include <stdio.h>
int main()
{
int x, a = 0;
x = sizeof (a++) ? printf ( "Geeks for Geeks" ) : 0;
printf ( "Value of x:%d" , x);
printf ( "Value of a:%d" , a);
return 0;
}


输出:

Geeks for Geeks
Value of x:16
Value of a:0

说明: sizeof 是编译时运算符,因此在编译时,sizeof及其操作数将替换为结果值。完全不计算操作数(除非它是可变长度数组);只有结果的类型才重要。在sizeof运算符中,将不计算a++的值。因此它将保持不变,即a的值将为0。 printf返回宽度的数字。极客的极客是16宽度。这将返回16。所以x现在16岁了。

问题2

#include <stdio.h>
int main()
{
int x;
x = 5 > 8 ? 10 : 1 != 2 < 5 ? 20 : 30;
printf ( "Value of x:%d" , x);
return 0;
}


输出:

Value of x:30

解释 :

exp1?exp2:exp3          
5 > 8 ? 10: 1!= 2<5 ? 20:30

exp1的输出为false,因此将对exp3(1!=2<5?20:30)进行评估。在exp3中,这也是三元运算符的形式。 1 != 2< 5 ? 20 : 30 ( exp1?exp2:exp3 ) 现在,exp1将被评估。根据运算符优先级,将首先计算2<5(将给出输出1)。现在,exp1就像1=1(条件为假)。因此,将对exp3进行评估。因此,最终输出为30。 问题3

#include <stdio.h>
int main()
{
int x;
x = 5 < 8 ? 1 != 2 < 5 == 0 ? 10 : 20 : 30;
printf ( "Value of x:%d" , x);
return 0;
}


输出:

Value of x:10

说明:

exp1?exp2:exp3
5 < 8? 1!=2<5 == 0 ? 10:20:30

exp1为true,因此将计算exp2。exp2也是三元运算符的形式。 1!= 2<5 == 0? 10 : 20 ( exp1?exp2:exp3 ) exp1(1!=2<5==0)被计算。在exp1中,根据运算符优先级,将首先计算2<5(条件为真)。现在exp1是1=1==0. 同样,根据运算符优先级,计算1==0(条件为false)。现在exp1是1=0(条件为真)。现在,exp2将被评估。因此,最终输出为10。 问题4

#include <stdio.h>
#include <stdio.h>
int main()
{
int x;
x = 2 > 5 != 1 ? 5 < 8 && 8 > 2 ? !5 ? 10 : 20 : 30 : 40;
printf ( "Value of x:%d" , x);
return 0;
}


输出:

Value of x:20

说明:

exp1?exp2:exp3
2 > 5 != 1 ? 5 2 ? !5 ? 10:20:30:40

exp1将始终被评估。根据运算符优先级,将首先计算2>5(条件为false)。现在,exp1是0=1.情况属实。因此,exp2将被计算,这也是三元运算符形式。

52 ? !5 ? 10:20:30 
(exp1?exp2:exp3)

exp1将被评估。根据运算符优先级,将评估52(条件为真)。现在,exp1是1&&1(条件为true)。所以exp2将被计算,它也是三元运算符的形式。

!5 ? 10:20 (exp1?exp2:exp3)

exp1将被评估,值为!5为零,因此将对exp3进行评估。最终输出为20。 问题5

#include <stdio.h>
int main()
{
int x;
x = 2 > 5 ? 1 != 2 > 5 ? 10 : 20 : 5 < 8 ? 2 != 2 > 5 ?
!5 ? 30 : !1 != 1 ? 40 : 50 : 60 : 70;
printf ( "Value of x:%d" , x);
return 0;
}


输出:

Value of x:40

解释

exp1?exp2:exp3
2>5   ?   1!=2>5?10:20   :  55?!5?30:!1!=1?40:50:60:70;

exp1将始终被评估。2> 5(条件为假),因此将对exp3求值,这也是三元运算符的形式。

55?!5?30:!1!=1?40:50:60 : 70  (exp1?exp2:exp3)

exp1将被计算,5<8(条件为真),因此exp2将被计算,这也是三元运算符的形式。

2!=2>5  ?  !5?30:!1!=1?40:50  :  60 (exp1?exp2:exp3)

exp1将被评估。根据运算符优先级,将首先计算2>5(条件为false)。所以,exp1现在是2=0(条件为真)。现在,exp2将以三元运算符的形式进行计算。

!5  ?  30  :  !1!=1?40:50  (exp1?exp2:exp3)

exp1将被评估,值为!5等于零。因此,exp3将以三元运算符的形式进行计算。

!1!=1  ?  40  :  50  (exp1?exp2:exp3)

exp1将被评估。根据运算符优先级!1将首先进行评估,即0。现在,exp1是0=1(条件为真),将评估exp2。因此,最终输出为40。

本文由 维奈·辛格 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享