1
头图

在c语言的赋值类型转换中,有两种转换方式,分为隐性转换和显性转换。

什么是隐性转换,举个简单的demo(当然了,实际遇到的肯定比这复杂太多)

int a = 3;
int b = 0;
a = b;
printf("%d", a);

在这里,a的值应该为几,没错,已经不再是之前的数字,而是变成了b赋予的值,也就是说,我们这两行代码已经将a赋予的3变成了b赋予的0,我们将这种系统“偷偷摸摸”修改的称之为隐性转换

这种隐性转换,可以对b的值作出修改,看起来是不是很方便,但是,我们下面再举一个例子,我们假设a的值为100000,b的值为1,

int a = 1000000;
    short int  b = 1;
    b = a;
    printf("%d", b);

这种情况下,我这边运行的结果如下:
结果

所以不难看出数据出现了丢失,这是因为,a,b两个值的区间过大。因此成为了某些程序员代码中bug的一部分。
说完隐性转换,再说说显性转换,举一个简单的例子:

int a = 100;
    double  b = 0;
    b = a;
    printf("%d", (int)b);

这里实际上就是显性转换,显性转换,顾名思义,就是我明知道会这样,故意这么去设定操作,这里有几个容易失误的地方,那就是输出时一定需要用%d和(int),对它进行强制。否则输出结果就是浮点型。

好啦,这篇博客就写到这里,如果有其他疑问,欢迎评论区评论。


瞿小凯
1.3k 声望593 粉丝