java高手进来下,有个问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 07:26:20
a||!b&&c,其中a=true
这样的话后面!b&&c会被判断吗?
比如a:x==0
b:10/x==0
c:5/x==0;
现在让x=0,我觉得会出错,可为什么还能运行呢?

不是说&&的优先级高于||吗?为什么不先判断后面呢?

&&优先级比||高,所以要先算&&的 ,对了你的那个a:x是什么意思,没见过这种运算符啊

你说的没错,正是因为&&优先级比||高,所以在执行之前,编译器默认的将
a||!b&&c 理解成为

a||(!b&&c)

但是也是先判断a的值,如果你改成

!b&&c||a

那就先运算&&了

会被判断,因为 && 和 ! 的优先级都比|| 要高;不过他们的结合方向都是自左向右的,所以先判断前面的;

“:”是一个条件运算符,结合方向是自由向左的,所以x=0;不应该出错。