大一新生 能细说一下解题过程吗

img


可以细说一下思路吗(x||y--)中y--我懂的但结果不应该不同吗为什么答案是1啊😭

因为y--,减号在后面代表先运算再自减,所以先进行x||y之后y--
第一步:x||y=1【2||1为真所以x||y=1】所以表达式值为1
第二步:y=y-1;【这里是表达式运算之后y的值】

题很短,知识点很多
1.c语言各种值类型之间可以隐式互相转换
2.||是逻辑或运算符,它两边需要bool值类型的变量
3.当||两边出现非bool值类型时,会隐式的转换成bool类型
4.非0转换为true,0转换为false,所以x=2,转换为true
5.||具有短路特性,左边已经是true,直接返回true,y--不执行
6.当问表达式的值时,通常指int值,所以bool值的true和false还要重新转换回int,true转为1,false转为0,所以表达式的值是1