if(a)中的a是条件表达式,非0即真,这里面a=0,所以是假,if条件不成立,所以也就不执行m=a;操作,否则执行m=a;操作。另:m=a是赋值语句,是将a的值赋给m。
例如:
0 0 5
先看c=(a-=a-5),(a=b,b+3);
先计算a-=a-5, a=5, 就c=5, 再看后面的(a=b,b+3);a=b=0, b+3没有改变值
所以最后 a=0,b=0,c=5
扩展资料:
若有多个条件表达式像这样连在一起:x=<表达式1>?<表达式2>:<表达式3>?<表达式4>:<表达式5>···执行顺序是从右到左依次判断再求出最后的x,即所谓的右结合性。
注意:如果最后一个表达式是逗号表达式,注意逗号表达式的优先级比条件表达式的优先级低,实际运用中应该避免这种情况以免出错。
例如: int a=1,b=2,c=3,d=4;则条件表达式x=a<b?a:c<d?c:d;的值为:1
参考资料来源:百度百科-条件表达式