上机1_1:温度转换

int main()

{

int f;

float c;

scanf(

"%d", &f );

//c =

5/9*(f-32);

c =

5.0/9*(f-32);

printf(

"%.2f\n", c );

return 0;

}

现象:c = 5.0/9*(f-32)正确,输入93,输出33.98;

c =

5/9*(f-32)错误,输入93,输出0.00;

c语言的类型转换:

语句和表达式通常应该是只使用一种类型的变量和常量,但如果你使用了混合类型,C则会用一个规则集合来自动完成类型的转换。这可能很方便,但也可能很危险,尤其在你无意地混合使用了不同类型的情况下。

隐式类型转换规则:

C语言自动转换不同类型的行为称之为隐式类型转换

,转换的基本原则是:低精度类型向高精度类型转换,具体是:

int -> unsigned int -> long -> unsigned long

-> long long -> unsigned long long -> float -> double -> long

double

注意,上面的顺序并不一定适用于你的机器,比如当int和long具有相同字长时,unsigned int的精度就会比long的精度高(事实上大多数针对32机的编译器都是如此)。另外需要注意的一点是并没有将char和short型写入上式,原因是他们可以被提升到int也可能被提升到unsigned int。

提升数据的精度通常是一个平滑无损害的过程,但是降低数据的精度可能导致真正的问题。原因很简单:一个较低精度的类型可能不够大,不能存放一个具有更高精度的完整的数据。一个1字节的char变量可以存放整数101但不能存放整数12345。当把浮点类型数据转换为整数类型时,他们被趋零截尾或舍入。

强制类型转换:

通常我们应该避免自动类型转换,当我们需要手动指定一个准确的数据类型时,我们可以用强制类型转换机制来达到我们的目的,使用方法很简单,在需要强制转换类型的变量或常量前面加上(type),例如(double)i;即把变量i强制转换成double型。

在c = 5/9*(f-32)中,右边是int,结果为0,左边是float,发生隐式类型转换,c为0.00;

在c = 5.0/9*(f-32)中,(f-32)的为int,结果为61,5.0/9发生隐式类型转换,转换为float,结果为9分之5,相乘为float,结果为33.98

因此,题中语句有两种写法:

c = 5.0/9*(f-32); --------------------发生隐式类型转换

c = (float)5/9*(f-32);--------------强制类型转换

int main()

{

int f;

int c1,c2;

float c;

scanf( "%d", &f );

//c = 5/9*(f-32);

c1 = 5/9*(f-32);

c2 = (float)5/9*(f-32);

c =

5.0/9*(f-32);

printf(

"%d\n", c1 );-----------输出0

printf(

"%d\n", c2 );-----------输出33

printf(

"%.2f\n", c );----------输出33.98

return 0;

}

C语言温度转换窗体,C语言1_1:温度转换相关推荐

  1. mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数

    C语言中的多字节字符与宽字符 字符型char只占八位,存储ascii码的,而宽字符型是为了存储多国语言的代码unicode,包括中文,法语德语什么的,8位256种不够用了 C语言原本是在英文环境中设计 ...

  2. 组态中常用c语言代码,工业组态软件中CFC语言的设计实现及语言转换的研究

    摘要: 近年来随着IEC61131-3国际标准的正式公布与推广,基于此标准的工业自动化领域的组态软件,经过不断完善已日趋成熟并获得了广泛的应用组态软件作为DCS PLC SCADA等控制系统的上位机软 ...

  3. C语言进制的格式字符,GB汉字文件转换成C语言Unicode十六进制字符串格式

    可以用在编程环境只能用GB,但程序中的汉字字符串需要用C语言的Unicode十六进制字符串格式表示.可以先在字符串中直接输入汉字,再用此程序转换. 源代码用C# //ascii & GB to ...

  4. 论文浅尝 | 改善多语言KGQA的 Zero-shot 跨语言转换

    笔记整理:谭亦鸣, 东南大学博士生 来源:NAACL'21 链接:https://aclanthology.org/2021.naacl-main.465/ 概述 为了扩展多语言知识图谱问答的应用,Z ...

  5. c语言注释换颜色,C语言实现注释转换

    将C语言注释转换成C++注释 #pragma once #pragma warning (disable:4996) typedef enum ConvertState { SUCCESS,//转换成 ...

  6. c语言linux下可用函数,[原创]linux下编码转换问题,C语言实现,使用iconv函数族68...

    [原创]linux下编码转换问题,C语言实现,使用iconv函数族68 (2012-07-30 02:49:00) 标签: linux 68 c语言 杂谈 #include #include #inc ...

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

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

  8. c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...

    C 语言进制之间的转换 二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位 ...

  9. c语言 格式转换函数,C语言中的格式转换函数.doc

    C语言中的格式转换函数 C语言中的格式转换函数 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过 ...

最新文章

  1. [置顶] 我的GB28181标准开发里程碑——基于eXosip的IPC端与SPVMN注册成功
  2. [Leetcode] Permutations 全排列
  3. windows设置自动清理log
  4. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(九)
  5. python中getopt函数_python getopt模块使用方法
  6. reStructuredText
  7. Bailian2964 日历问题【日期+模拟】
  8. python 调用dll中c或c++语言带指针,数组方法
  9. 一些简单好玩的C语言程序
  10. AVEVA InTouch安全网关 AccessAnywhere 任意文件读取漏洞 CVE-2022-23854
  11. whale 帷幄:数字化营销运营 全渠道数字化精益营销管理平台
  12. SQL教程——常见的约束类型
  13. stm32编程初始化设备步骤
  14. 编译安装vlmcsd
  15. IOS测试——keychain_dumper工具的使用
  16. 【Java 8 新特性】Java Stream 通过min()和max()获取列表最小值和最大值
  17. 2017《Java技术预备作业1》计科1502杨雪莹
  18. 联发科MT6139射频处理器工作原理分析
  19. 自己编程实现抖音特效(Python)
  20. 哪款蓝牙耳机的音质好?四款音质最好的蓝牙耳机测评

热门文章

  1. 发散级数(中文维基百科)
  2. 机房迁移测试时需要注意事项
  3. vueweb端响应式布局_移动端和pc端,响应式设计布局
  4. 电驴诞生10周年eD2k老而弥坚
  5. 基于java失物招领系统
  6. 时事评论--公众有权知道“砒霜门“的真像
  7. 解决ROS中运行launch文件报错ERROR: cannot launch node of type[xxx/xxx]:xxx的问题办法最全汇总
  8. Xilinx Ultrascale 多通道高速TDC
  9. UINCODE字符串和安全字符串函数(好)
  10. 计算机人物事迹范文,人物事迹通讯稿范文.doc