_Phoebe__ 2022-05-05 22:45 采纳率: 96.9%
浏览 37
已结题

这个l j k分别是几捏

img


不懂短路原则
c语言逻辑运算的问题
这个思考题
l j k分别是几呢
谢谢大家!

  • 写回答

4条回答 默认 最新

  • 关注

    初始值:i=10,j=3,k=0
    表达式 i==1 && (j==3 || (k=k+1))

    计算顺序是:
    先计算i==1,i=10,i==1不成立
    &&运算时,如果&&左侧为假,右侧就不再执行,因为当&&左侧为假时,右侧不管真假,整体的运算结果都是假,所以,
    当&&左侧为假时,编译器就不再执行&&右侧的运算了,所以,在这个表达式中(j==3 || (k=k+1))是不执行的
    i、j、k的值不变,仍然是 i=10,j=3,k=0


    表达式:i==1 && j==3 || (k=k+1)
    计算顺序从做到右,i==1不成立,所以&&右侧的j==3不执行,执行k=k+1,k=1
    所以,最后i=10,j=3,k=1


    在表达式 i==1 && (j==3 || (k=k+1))中,&&右侧在一个()中,()中的内容看做一个整体。
    在表达式i==1 && j==3 || (k=k+1)中,&&右侧没有(), 只有j==3参与 &&运算
    注意两者的差别

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 已采纳回答 5月5日
  • 创建了问题 5月5日