4个回答
展开全部
D=20
考的其实是C++的一些约定规则。
背景:c++里的bool和int其实是一种类型(bool是int的一个别名),所以两者可以混用。
约定1:true和false约定。bool的true 本质上是 int 1, false本质上是int 0。所以反过来int 0和int 1均可以取非操作:即!1==0, !0 == 1;
约定2:if(x)约定。 当x为0时为false,x为非0值时默认为true。
约定3:当if或else没有大括号时,默认把下一行作为其执行语句,若下一行也是if或else则继续该规则。因此最后两个if(!c)和else其实是 else if(!b)的子项,因为(!b)不成立所以根本没后面两条的判断。这个题没有进任何判定分支。
基于以上三个规则,就能理解该题了。
考的其实是C++的一些约定规则。
背景:c++里的bool和int其实是一种类型(bool是int的一个别名),所以两者可以混用。
约定1:true和false约定。bool的true 本质上是 int 1, false本质上是int 0。所以反过来int 0和int 1均可以取非操作:即!1==0, !0 == 1;
约定2:if(x)约定。 当x为0时为false,x为非0值时默认为true。
约定3:当if或else没有大括号时,默认把下一行作为其执行语句,若下一行也是if或else则继续该规则。因此最后两个if(!c)和else其实是 else if(!b)的子项,因为(!b)不成立所以根本没后面两条的判断。这个题没有进任何判定分支。
基于以上三个规则,就能理解该题了。
展开全部
if(a)为false不执行,if(!b)也为false不执行,也就是跳过了之后的if(!c)和else部分,所以最终是20吧
else和最近的if配对
else和最近的if配对
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询