发布网友 发布时间:2023-03-06 11:19
共2个回答
热心网友 时间:2024-03-27 08:21
详解如下:(你题目中的输出语句应该写错了哦~仔细看下~)热心网友 时间:2024-03-27 08:21
printf("%d\n",(m1=f1>=f2)) && (m2=f3<=f4)注意这句的括号,最终是将printf("%d\n",(m1=f1>=f2))的返回值与(m2=f3<=f4)的值进行&&运算,但有输出操作的是printf("%d\n",(m1=f1>=f2)),而这其中(m1=f1>=f2)的值为1,因为关系运算符>=的优先级比赋值运算符=要高,所以先算f1>=f2,结果为真,即1,所以m1被赋1,并将m1的值作为整个赋值表达式的值,所以会输出1,而printf("%d\n",(m1=f1>=f2)) && (m2=f3<=f4)运算得到的结果(结果同样为1)被丢弃,未存入任何变量或输出