变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。

1.自动转换

自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循的规则如图2-3所示,可以从几个方面来理解这个规则:

(1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

(2)转换按少字节向多字节类型转换,以保证精度不降低。如short型和long型运算时,先把short型变量转换成long型后再进行运算。

(3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

(4)char型和short型参与运算时,必须先转换成int型。

(5)在赋值运算中,当“=”两边的运算对象类型不相同时,系统自动将“=”右边表达式的值转换成左边变量的类型后再赋值,具体规定如下:

1)实型赋予整型,舍去小数部分;

2)整数赋予实型,数值不变,但增加小数部分(小数部分值为0);

3)字符型赋予整型,由于字符型占一个字节,而整型占四个字节,因此将字符的ASCII码值放到整型量的低8位,高24位补0。

4)整型赋予字符型,只把低8位赋予字符量。

图2-3 类型自动转换规则

【例2-11】自动数据类型转换

#include

int main()

float PI=3.14159;

int s,r=5;

s=r*r*PI;

printf("s=%d\n",s);

return 0;

程序运行结果:

s=78

本例程序中,PI为实型,s,r为整型,在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型,但由于s为整型,故赋值结果仍为整型,舍去了小数部分。

2.强制类型转换

强制类型转换是通过类型转换运算来实现的。

其一般形式为:

(类型说明符) (表达式)

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如:

(float) a; /* 把a转换为实型 */

(int)(x+y); /* 把x+y的结果转换为整型 */

3.在使用强制转换时应注意以下问题:

(1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。

(2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

【例2-12】强制数据类型转换

#include

int main()

float f=5.75;

printf("(int)f=%d,f=%f\n",(int)f,f);

return 0;

程序运行结果:

(int)f=5,f=5.750000

本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变,因此,(int)f的值为5(删去了小数),而f的值仍为5.75。

c 语言字符型转换为整形,高楼平地起!C语言数据的两种类型转换相关推荐

  1. 将字符串型转换为整形

    将字符串转换为整形值,主要使用Integer类的parseInt()方法和valueOf()方法 他们都可以接收一个String类型的参数,parseInt()方法返回一个int类型的值,valueO ...

  2. c语言字符型运算符,C语言试题:数据类型、运算符与表达式

    <C语言试题:数据类型.运算符与表达式>由会员分享,可在线阅读,更多相关<C语言试题:数据类型.运算符与表达式(4页珍藏版)>请在人人文库网上搜索. 1.3 数据类型.运算符与 ...

  3. c语言字符型数据是,C语言字符型数据.doc

    C语言字符型数据 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是单引号(')和反斜杠(\), ...

  4. c语言中字符加上48是,【2017年整理】C语言字符型数据(4、5).doc

    [2017年整理]C语言字符型数据(4.5) 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是 ...

  5. c语言字符型常量计算,c语言字符型常量和变量.doc

    c语言字符型常量和变量 谅娄协逞妥唐氦错赵夏教灶技竞白量菲荚锚坤缆咕囤厢失随着牲淋我雾谋蹬格椭金佃贮官梳冕萨鱼疥卫答襟回咬逢砾摘宛嵌拎宛拽抱钢簧彩城挛霉门窗莉辉托罚椽建呛液汛炕午望延晒纠挺谱阔衔解抗贱 ...

  6. C语言字符型变量的存储和取值

    目录 1.问题引入 2.字符型变量的存储 3.字符型变量的取值 4.字符型变量中的-128 5.取值转换图 1.问题引入 我们知道,在C语言中,一个字符型数据占8个bit位,那么当我们定义一个字符型数 ...

  7. 下列不是C语言字符型常,以下选项中,()是不正确的C语言字符型常量。

    以下选项中,()是不正确的C语言字符型常量. 下语在多图层操作中,如果想要某一图层不被遮挡应该将它放在图层列表中什么位置? 当胶体粒子的直径( )入射光的波长时,选项型常可出现丁达尔效应. 有关超显微 ...

  8. R语言可视化世界地图:包含边界边框和不包含边界边框两种方案

    R语言可视化世界地图:包含边界边框和不包含边界边框两种方案 目录 R语言可视化世界地图:包含边界边框和不包含边界边框两种方案

  9. C语言字符型char和整型int的关系和示例

    文章目录 1.字符就是整数 2.为什么C语言需要字符类型 3.获取视频教程 4.版权声明 1.字符就是整数 字符和整数没有本质的区别.可以给 char变量一个字符,也可以给它一个整数:反过来,可以给 ...

最新文章

  1. 兔子的区间密码-最大异或对
  2. Android Realm相关操作
  3. 为什么不能根据返回类型来区分重载
  4. python中from import用法_python学习--Python之import与from...import的区别与用法
  5. [COCI 2018#5]Parametriziran
  6. Redis 的 8 大应用场景
  7. pip代理解决pip下载失败问题
  8. pytorch中的参数初始化方法
  9. 函数编程(Functional programming)
  10. thinkcmf安装教程与目录结构详解 快速上手版
  11. 手机c语言编译除法保留小数,C/C++整数除法以及保留小数位的问题
  12. Jensen不等式的证明
  13. 关闭Win10系统天气图标
  14. jca 实例 java_采用jca分析javacore文件示例
  15. 常见光纤连接头 ST、SC、FC、LC
  16. kali 2020.3中安装pyrit无法定位软件包
  17. openstack的endpoint
  18. Java clk啥意思_clock (CLK)是什么意思
  19. php 解压dat,如何打开dat文件?
  20. 一个相当有用的利器,提高检索匹配的效率!

热门文章

  1. 写论文时如何翻译外文文献?
  2. ue编辑器c语言语法高亮文件,自己动手做 UEStudio/UltraEdit 的语法高亮文件 (*.uew)...
  3. 基于OpenStack的云计算平台搭建
  4. 在Windows系统中查看下载文件的MD5,SHA1,SHA256校验码
  5. 【蓝桥杯每日一练:小Z的序列游戏-version1】
  6. 什么是固态功率放大器?射频固态功率放大器?
  7. 当外面的容器的height使用百分比时,如何设置line-height可以使里面的文字垂直居中
  8. 男人四十以后适合在哪个行业创业?为什么?
  9. 各种重力场模型下载网站
  10. matlab 期权分析,matlab程序优化 (期权计算为例)