char c1 = -1;  //报错
char c2 = 0xFFFF;
short s1 = -1;
short s2 = 0xFFFF;  //报错求解
是不是在编译时会进行边界检查?
为什么要这样检查?
还有,它是怎么检查的?

解决方案 »

  1.   

    char是无符号整数 范围0-255 当然是编译期检查的 你赋给它-1当然会报错
      

  2.   


    当然会进行数据类型的检查
    char的范围是0~2的16次方-1
    也就是0~65535
    所以你把-1赋值给char会报错
      

  3.   

    short s2 = 0xFFFF;  //报错 
    short的范围是-32768~32767 你赋给它ffff也就是65535当然就报错
    如果你要赋给它-1 就要写short s2 = 0xFFFFFFFF; 
      

  4.   

    short s2 = 0xFFFF;  //报错 short的范围是 -2的15次方到2的15次方-1
    也就是-32768到32767
    所以你赋值 0xFFFF,这个值实际上是65535
    所以,报错