C语言的<< 移位运算是包括符号位的,1从第0位左移31位,当然到了第31位上,因此,得到你上面的数0x8000...,这个数当然是负数了。
具体来说,如果一个signed int类型的负数进行右移操作,那么符号位会跟着移动,即在左侧补充1;如果进行左移操作,那么符号位也会跟着移动,即在右侧补充0。这是因为signed int类型的负数采用的是二进制补码表示法,符号位为1表示负数,为0表示非负数。移位操作时,符号位也会参与运算,因此会跟着移动。
public class GradeFromScore {public static void main(String[] args) {int[] score = new int[100];char[] grade = new char[100];for (int i = 0; i < score.length; i++) {score[i] = ... 360问答 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同... int x sting y choose case...