对于定义: int m=5, y=2;

对于定义: int m=5, y=2; 当计算表达式 y+=m>y+2||--m 后,

printf("%d#%d#", m, y );
的输出是

求计算过程

5#3#
等价于y = y + (m > y+2 || --m);
m > y+2为真,由于短路或,--m不计算
故y = y + 1 = 3
m依然是5

y+=m>y+2||--m;即可写成y=y+(m>y+2||--m)
m=5,y=2;带入计算:先计算括号内,m>y+2即5>2+2为true,即结果为1,后面是或||运算,只要||前面计算结果为true,就不计算||后面的表达式,因此不计算--m,所以m的值为5, (m > y+2 || --m)=1
所以y=2+1=3,所以m=5,y=3

#include <stdio.h>
#include<math.h>

int main()
{
    int m=5,y=2;
    y+=m>y+2||--m;
    printf("%d#%d#", m, y );
    return 0;
}

运算结果:
5#3#