本文发布于微信公众号:三玹
上一篇文章,学习了C语言的6种基本数据类型。这篇文章就来聊一聊,基本数据类型之间的转换。
#include<stdio.h>
int main(){
int a = 5;
int b = 2;
double c = a / b;
printf("%f", c);
return 0;
}
typename variable = (typename) expression
typename 即数据的类型;variable 即变量;expression 可以是具体的值、某个变量、某个表达式等等。
在前面的那段计算代码中加上对某个 int 类型进行强制转换之后,再来看看结果是什么样的:
#include<stdio.h>
int main(){
int a = 5;
int b = 2;
double c = (double)a/b;
printf("%f", c);
return 0;
}
运行结果:2.500000。
OK,符合预期的结果了!
看到这里,肯定有人又有疑惑了,为什么不直接把 a/b 括号起来然后进行转换?为什么只转换其中一个,结果就正确了呢?
首先第一个问题,这是因为如果括号起来,那么首先计算的是 a/b,仍旧是两个整数相除,结果还是 2,然后经过 double 转换,运行的结果就和上面的一样,都是2.000000。
第二个问题,为什么只转换其中一个。这是因为在C语言中,不同类型的数据在进行操作的时候,首先会根据转换规则将这两种不同类型转换为同一种类型。而转换的规则,是由低级向高级转换,具体如下图所示:
#include<stdio.h>
int main(){
double a = 10.55;
int a_i = (int)a;
printf("a=%lf, a_i=%d", a, a_i);
return 0;
}
运行结果:a=10.550000,a_i=10
代码中,double 类型的 a 变量通过强制转换的方式将其转换为 int 类型,并将值赋给了 a_i 变量,这种转换并没有影响到 a 变量本身的值或者类型。
如果 a 变量的值发生了改变,那么输出的结果应该是 10.000000。
最后
关于基本数据类型之间的转换内容就讲到了这里。文章中可能会存在一些缺漏的知识点,大家如果有什么想法或者疑惑可以在评论区留言,一起交流学习。最后,感谢大家的观看!