C程序设计语言 2.7 类型转换

当一个运算符的几个操作数类型不同时,就需要通过一些规则把它们转换成某种共同的类型。一般来说,自动转换是把"比较窄的"操作数转换成"比较宽的"操作数,并且不丢失信息的转换,例如,在计算表达式1.1+1时,1会自动转换为1.0。不允许使用无意义的表达式,例如,不允许把float类型的表达式作为下标。针对可能导致信息丢失的表达式,编译器可能会给出警告信息,比如把较长的整型值赋给较短的整型变量,把浮点型赋值给整型变量,等等。打这些表达式并不非法。

char类型就是长度较小的整型,将char类型转换成整型时,我们需要注意一点。C语言没有指定char类型的变量是无符号(signed)还是有符号(unsigned)。当把一个char类型的值转换成int类型的值时,其结果有没有可能为负整数?对于不同的机器,其结果也不同,这反映了不同机器结构之间的区别。在某些机器中,如果char类型值得最左一位为1,则转换为负整数。而在另外一些机器中,把char类型值转换为int类型时,在char类型值得左边添加0,这样导致的转换结果值总是正值。为了保证程序的可移植性,如果要在char类型的变量中存储非字符数据,最好指定signedunsigned限定符。

c语言中,很多情况下会进行隐式的算术类型转换。一般来说,如果二元运算符的两个操作数具有不同的类型,那么在进行运算之前先把较低的类型提升为较高的类型,运算的结果为较高的类型。

不光在运算时会有类型转换,赋值时也要进行类型转换。赋值运算符右边的值需要转换为左边变量的类型,左边变量的类型即赋值表达式结果的类型。在函数调用的参数传递时也会进行类型转换。

未完。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 12,781评论 9 66
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 8,584评论 0 6
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,800评论 3 44
  • 能力指的是能够根据某个角色或任务的适当标準,按照预期地去表现自己。 信任他人便关系到评估他人的能力...
    婉缘阅读 968评论 0 0
  • 大家好,你们的小可爱西瓜又回来了~~,听说周末又有很多地方要降温了,西瓜所在的城市马上要零下的温度了,让西瓜蓝瘦...
    西瓜太郎菌阅读 5,182评论 9 16