数据类型转换就是将数据(变量、表达式的结果)从一种类型转换到另一种类型。例如,为了保存小数你可以将int类型的变量转换为double类型。

数据类型转换的一般格式为:

(type_name) expression

type_name为要转换到的数据类型,expression为表达式。例如:

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

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

(float) 100; //将一个常量转换为实型

【示例】将整数转换为浮点数:

#include

int main(){

int sum = 17, count = 5;

double mean;

mean = (double) sum / count;

printf("Value of mean : %f\n", mean);

return 0;

}

运行结果:

Value of mean : 3.400000

需要注意的是,类型转换运算符( )的优先级高于/,(double) sum / count会先将 sum 转换为 double 类型,然后再进行除法运算。如果写作(double) (sum / count) ,那么运行结果就是 3.000000。

这种由程序员显式进行的转换称为强制类型转换。除了强制类型转换,在不同数据类型的混合运算中编译器也会隐式地进行数据类型转换,称为自动类型转换。

自动类型转换遵循下面的规则:

1.若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。

2.转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。

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

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

5.在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。

下图表示了类型自动转换的规则:

【示例】自动数据类型转换。

#include

int main(){

float PI=3.14159;

int s1, r=5;

double s2;

s1 = r*r*PI;

s2 = r*r*PI;

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

return 0;

}

运行结果:

s1=78, s2=78.539753

在计算表达式r*r*PI时,r 和 PI 都转换成double类型,表达式的结果也为double类型。但由于 s1 为整型,所以赋值运算的结果仍为整型,舍去了小数部分。

注意是将小数部分直接丢掉,而不是按照四舍五入向前舍入。

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

请看下面的例子:

#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

以上就是对 C语言数据类型的转换的实例详解,希望能帮助学习 C语言基础知识的同学。

c语言强制转换字符类型,C语言数据类型转换实例代码相关推荐

  1. c语言强制转换字符类型,C语言中的数据类型转换问题

    C语言中的数据类型转换问题 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...

  2. c语言强制转换是四舍五入,c语言强制转换四舍五入.docx

    c语言强制转换四舍五入 在C语言中,强制转换后的数是四舍五入还是去尾?去尾要想四舍五入的话(int)(number+0.5)都是直接去尾的.当为数太多时直接截断.所以在强制转换时要很注意C语言有没有数 ...

  3. (四)C语言中的字符类型

    (四)C语言中的字符类型 C语言中的字符型数据分为字符和字符串数据两类.**字符数据是指由单引号括起来的单个字符,**如'a'.'2'.'&'等:字符串数据是指由双引号括起来的一串字符序列,如 ...

  4. python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...

    Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...

  5. c语言 强制转换 作用域,C语言之总结1详解

    1). 终端常用的命令: pwd 显示终端的工作路径. ls  list 清单 显示当前工作路径下的所有的文件以及文件夹. ls -l 以详细信息显示当前工作路径下的所有的文件以及文件夹. cd 要切 ...

  6. C语言强制转换与输出格式不对应问题

    强制转换共分两种 第一种:(int ) (x+y); 第二种:(int )x+y;针对这两种的程序运算以及出错点: #include<stdio.h> int main() {int a; ...

  7. c语言问题 输出字符类型及数量

    文章目录 1.问题简介 2.问题构思 3.代码 1.问题简介 输入字符串,得到该字符串的字符类型和数量. 2.问题构思 可以利用循环和条件语句来一一判断即可. 3.代码 #include<std ...

  8. 有关C语言强制转换,int/float

    1.一个int以浮点型形式输出 如果没有进行强制转换,系统不认识把int型的变量,把它默认为0的float型. 代码: #include<stdio.h> int main() {int ...

  9. c语言判断非法字符题目,C语言考试题库之判断题-c语言考试判断题

    <C语言考试题库之判断题-c语言考试判断题>由会员分享,可在线阅读,更多相关<C语言考试题库之判断题-c语言考试判断题(7页珍藏版)>请在人人文库网上搜索. 1.三.判断题(1 ...

最新文章

  1. C#使用xpath简单爬取网站的内容
  2. python爬虫入门代码-Python爬虫入门(一) 网络爬虫之规则
  3. [JSOI2007]麻将
  4. android context继承关系,android中Context深入详解
  5. 异步调用WebService方式!
  6. .net core i上 K8S(六).netcore程序的service网络代理模式
  7. 1万亿次、10亿人、10亿张,科技给生活带来多少改变?
  8. phpcms留言板功能的实现
  9. t检验的p值对照表_统计学|各类统计检验方法大汇总
  10. SpringBoot App Registers UNKNOWN with Eureka in Brixton SR3
  11. JavaScript文档对象模型document对象查找Html元素(2)
  12. webpack系列-优化
  13. Xshell7安装教程
  14. cad如何多选对象_CAD如何快速选择对象
  15. 关于QQ邮箱登录提示一键登录解决方案
  16. html底部添加备案号,网站底部怎么放备案号 WordPress、CMS、discuz等常见程序添加方法...
  17. python 实现简单画板_python 画板示例源码(可做签名/涂鸦)
  18. 国家开发银行广东省分行
  19. 【SAP】ABAP开发——ALV展示后字段的下划线连接
  20. 使用tortoisegit clone通过ssh clone远程库:invalid gitfile format: D:\Program Files\TortoiseGit\bin\Tortois“

热门文章

  1. 限速Linux路由器
  2. 解决pycharm书写代码是鼠标光标变粗的问题
  3. 滤除音频文件背景噪声
  4. 1.6 Java遍历Map集合
  5. idea中注释变成繁体字
  6. 戴尔笔记本 Win10蓝屏 终止代码:NTFS FILE SYSTEM的解决方案
  7. 微信小程序上传多张图片到服务器,怎么在微信小程序中同时上传多张图片
  8. 宏定义和inline函数的关联
  9. React引入组件并使用 但系统一直报错说引入但没有使用 (问题解决方法)
  10. 装机:MSDT HEDT 的区别