假定 int a=1,b=2,c=0,表达式:c=(a== --b||--a,a+b+1.0/2) 的值是 B .

1个回答

  • ①结果为2

    ②int a=1,b=2,c=0;

    c=(a==--b||--a,a+b+1.0/2);

    我们先把其中所有运算符列出来,先低后高:

    =

    ,

    == ||

    +

    /

    --

    ()

    ③按以上优先级顺序,从高优先级开始加括号:

    c=(((a==(--b))||(--a)),((a+b)+(1.0/2)));

    == || 这两个操作符优先级相等,就按从左到右的顺序加括号

    我们分析一下,先进行 --b;

    再进行 a==(b);

    这时候成立,

    || 有一个断路特点 比如 1||(--a) 这时候 --a不会被执行.

    逗号运算符的特点是,其最终值只是最后一个逗号表达式的值(但前面会按顺序去运算).

    ④c=2.5; 但是c 是int型,所以自动隐式转化为2.

    ⑤还有什么不清楚加QQ 739227481