本帖最后由 STM32W108 于 2011-1-17 18:52 编辑
运算符两边的操作数一定是int
-------------------------------------------
算术运算符两边的操作数至少要为int。
或者是比int具有更高提升级别的类型,如unsigned int,long等。
说的char 一定是8位的吧,short int 也是8位的,8位*8位=16位(int) 这个没错吧。
----------------------------------------------------
*乘法算术运算符两边的操作数至少要为int,char * char,两边操作数都不满int,将自动转换成int(整型提升),最后结果是int。
整型提升的目的就是要满足算术运算符两边的操作数至少要为int的要求。
32767*32767=(32位)=int 装得下吗?
------------------------------------------------
楼上没把数学等式与C语言规则分清楚。
C语言里所有数据都有类型。两个数据进行运算,会按照他们的类型运算规则,得出结果。
而int*int,得到的结果永远是int型,不可能是其他类型。C语言标准如此。
如果int是16位,那么32767*32767的结果就是1,类型是int。
|