java – 为什么10 >> 2 5 >> 2评估为零?
发布时间:2020-12-15 04:24:45 所属栏目:Java 来源:网络整理
导读:请考虑以下代码: int a=10,b=5;int c=a2+b2;System.out.println(c); 运行时,(令人惊讶的)输出为0. 为什么会这样? 解决方法 将Java的 operator precedence(特别是优先级高于)和关联性规则考虑在内,表达式相当于 (a (2 + b)) 2 要么 (10 (2 + 5)) 2 这是零.
请考虑以下代码:
int a=10,b=5; int c=a>>2+b>>2; System.out.println(c); 运行时,(令人惊讶的)输出为0. 为什么会这样? 解决方法
将Java的
operator precedence(特别是优先级高于>>)和关联性规则考虑在内,表达式相当于
(a >> (2 + b)) >> 2 要么 (10 >> (2 + 5)) >> 2 这是零. 如果您需要在添加之前进行转换,请将它们括起来: (a >> 2) + (b >> 2) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |