在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),对它进行强制。否则输出结果就是浮点型。
好啦,这篇博客就写到这里,如果有其他疑问,欢迎评论区评论。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。