设为首页 加入收藏

TOP

14.3.3 由赋值产生的类型转换
2013-10-12 06:53:19 来源: 作者: 【 】 浏览:94
Tags:14.3.3 产生 类型 转换

14.3.3  由赋值产生的类型转换

如果赋值或初始化时等号两边的类型不相同,则编译器会把等号右边的类型转换成等号左边的类型再做赋值。例如int c = 3.14;,编译器会把右边的double型转成int型再赋给变量c。

我们知道,函数调用传参的过程相当于定义形参并且用实参对其做初始化,函数返回的过程相当于定义一个临时变量并且用return的表达式对其做初始化,所以由赋值产生的类型转换也适用于这两种情况。例如一个函数的原型是int foo(int, int);,则调用foo(3.1, 4.2)时会自动把两个double型的实参转成int型赋给形参,如果这个函数定义中有返回语句return 1.2;,则返回值1.2会自动转成int型再返回。

在函数调用和返回过程中发生的类型转换往往容易被忽视,因为函数原型和函数调用并没有写在一起。例如char c = getchar();,看到这一句往往会想当然地认为getchar的返回值是char型,而事实上getchar的返回值是int型,这样赋值会引起类型转换,可能产生Bug,我们在第24.2.5节将详细讨论这个问题。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇14.3.5 编译器如何处理类型转换 下一篇14.3.4 强制类型转换

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: