c语言面试题——分支

第五行: a > 5 只有两种结果,真(1) 和 假 (0), 所以表达式结果为0, 即为 case 0, 所以结果为 打印出 this is 0

严格上不能说是真(非0)和假(0), 只能说结果 是 1 或 0

修改: 如果 表达式为 a < 5 , 则结果为真(1), 所以表达式结果为1, 即为 case 1, 所以结果为 打印出 this is 1

分析:

①switch表达式里只能放整数类型【int、char、bool、short、long、enum枚举】(并不是什么都可以往里边放),如果表达式里放 浮点型float的化,会报错。(所以上图中,用到表达式为 a > 5, 取得结果为bool类型,虽然有警告,但还是可以运行的)

②switch的表达式和case标签后面的标签,只能是整数,所以下图 将会报错

c语言面试题——分支

③两个case标签后面的标签 经过转化后的值,不应该是相同的值, 因为 ‘a’ 的ASCII为97,所以下图将会报错

c语言面试题——分支

在if 表达式判断中,不管是 a > 5 还是 a - 2 ,判断的结果均为真(1)或假(0).

但是在swich后面的表达式:如果是判断表示式,则结果只为真(1)或假(0). 但是如果为普通表达式,那得出来的只能为他自己的结果,即为2,并不是1. 所有a - 2 它并不是进行所谓的真假判断,即相当于写了个switch(2)

c语言面试题——分支

相关文章: