读书人

C语言演算时的参数符号自动转换

发布时间: 2013-02-02 12:27:16 作者: rapoo

C语言运算时的参数符号自动转换

一个简单的问题?C语言中int和unsigned int二者谁的数值范围大?

提示一下,数值0在int中有+0和-0之分,unsigned int中0只有一个+0,所以unsigned int的数值范围比int大。

有C语言运算代码如下:

#include <stdio.h>

int main(int argc, char** argv) {
int val = -15;
unsigned int value = 13;
int sum = value + val;
printf("sum %d\n", sum);


return 0;
}

上面的sum结果是多少?

这个问题的答案自己去想。

C语言运算式子中,若有不同类型的变量,则数值范围小的变量会被自动转换为数值范围大的变量的类型。

所以C语言的转换规则即为:

1 char、short等变量会自动升级为int类型变量

2 unsigned char 、unsigned short变量会自动升级为unsigned int类型变量

3 有unsigned 和 signed 类型变量,则数值范围小的变量的类型会被升级为数值范围大的变量的类型。

由上面第三规则,上面代码中val的运算时类型为unsigned int。

其他的很多所谓的规则,自己很容易套用第三规则去推导。


读书人网 >C语言

热点推荐