首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-02-02 
C语言运算时的参数符号自动转换一个简单的问题?C语言中int和unsigned int二者谁的数范围大?提示一下,数0在

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。

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


热点排行