c语言 不同数据类型间的混合运算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 不同数据类型间的混合运算相关的知识,希望对你有一定的参考价值。
参考技术A 两种不同类型的数运算的时候,根据包容性,将低级范围的转换成高范围的,将小的转换为大的。这样才能保证结果更正确。比如将单精度转换成双精度,将short转换为long等。所以,结果是双精度的。如果结果保存到单精度的变量,将会有一个warning的编译警告。C语言各类数据类型间的混合运算
数据类型的转换一般有两种,自动转换
和强制转换
,前者由编译器自动完成,后者由程序员完成。当我们进行不同数据类型间的混合运算的时候,由编译器自动完成类型转换。
一般的自动转化
规则,按数据长度增加的方向进行转换。
如:
-
int
与long
相加减时,会先把int
转换成long
再进行计算,运算结果是long
型; -
float
与double
时,会先把float
先转成double
,运算结果是double
型; -
char
与int
时,会先把char
先转化成int
; -
有符号和无符号混合运算时,有符号类型要转换成无符号类型,运算结果是无符号类型的。
针对第四条:
int main(void)
{
int a = -10;
unsigned b = 5;
if ((a + b) > 0) {
printf("Hello World!\n");
}
printf("a + b = %d\n", a + b);
return 0;
}
输出是这样的:
Hello World!
a + b = -5
可见if ((a + b) > 0)
这条语句为真。这说明a + b
是正数,无符号的。这就是规则。
-
整数和浮点数混合运算时,整数先转化成浮点数,运算结果是浮点数; -
赋值运算中, =
号右边的会转化成左边的数据类型,如果右边的数据类型比左边的长,有可能丢失精度。
今天是 8 月 1 号。
C语言是很有趣的一门语言,有时间就看看C语言,以上内容主要参考的这本书[1]。
参考资料
《手把手教你学C语言》 : 吴明杰
以上是关于c语言 不同数据类型间的混合运算的主要内容,如果未能解决你的问题,请参考以下文章