short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
的有关信息介绍如下:赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。short s1 = 1; s1 = s1 + 1;错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);
short s1 = 1; s1 += 1;正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。
正确的写法是:short s1=1;s1=(short)(s1+1); 或者 short s1=1;s1+=1;
拓展资料
长整型 是 long int, 内存长度用4字节(32 位二进制)。短整型 是 short int, 内存长度用2字节(16 位二进制)
int 型 默认 为 long int。(但国内还有人使用的古老的TC编译器int 型 默认 为 short int);
应用上绝配:能表示的数值范围不同。并尘指 long int 比 short int 范围大。而 short int 的优点 是节省 内存单元。其它没什么兄戚不同。
长整型 取值范围在[-2147483648,2147483648]。无符号长整型 也就是没有负号的长整型 取值范围在 [0,4294967259]。短整型 取值范围在[-32768,32768]。无符号短整型 取值范围在[0,65535]
参考资料
c语言——百度百科