C语言运算时的参数符号自动转换
一个简单的问题?C语言中int和unsigned int二者谁的数值范围大?
提示一下,数值0在int中有+0和-0之分,unsigned int中0只有一个+0,所以unsigned int的数值范围比int大。
有C语言运算代码如下:
#include <stdio.h>上面的sum结果是多少?
这个问题的答案自己去想。
C语言运算式子中,若有不同类型的变量,则数值范围小的变量会被自动转换为数值范围大的变量的类型。
所以C语言的转换规则即为:
1 char、short等变量会自动升级为int类型变量
2 unsigned char 、unsigned short变量会自动升级为unsigned int类型变量
3 有unsigned 和 signed 类型变量,则数值范围小的变量的类型会被升级为数值范围大的变量的类型。
由上面第三规则,上面代码中val的运算时类型为unsigned int。
其他的很多所谓的规则,自己很容易套用第三规则去推导。