C语言系列之强制类型转换(一)
例子:
#include <stdio.h>
{
char cChar; //字符型变量
short int iShort; //短整型变量
int ilnt; //整形变量
float fFloat=70000; //单精度浮点型
cChar=(char)fFloat; //强制转换赋值
iShort=(short)fFloat; //
ilnt=(int)fFloat; //
printf("the char is: %c\n",cChar); // 输出字符变量值
printf("the long is:%ld\n",iShort); //输出短整型变量值
printf("the int is: %d\n",ilnt); //输出整型变量值
printf("the float is:%f\n",fFloat); //输出浮点型变量值
return 0; //返回值为0
}
输出结果:
the char is: p
the long is: 4464
the int is;70000
the float is 70000.000000
问题一:
the char is: p
为什么将单精度浮点型转换成字符型的时候输出结果为p;
根据C语言的结构而言,字符型输出方式可以用字符或者用ASCLL码,如下图所示

最简单的例子如:
cChar1='a';
cChar2=97;
printf("%c/n",cChar1);
printf("%c/n",cChar2);
输出结果:
a
a
因为a的ascll码就是97;
重点:
ascll码表一共有128位,当超过128位的时候,又重新开始。
例如例子中的数值为70000
70000/128=546余112;
由ascll码表可知,第112位为p;
所以输出结果为p
问题二
the long is: 4464
单精度浮点型转换成短整型的时候为什么输出为4464
我们知道短整型的区间为-32768至32767,两者相减加1等于65536
为什么要加1,是因为还有一个整数0
重点:
同上;
短整型一共有65536位,当超过这么位数时,又重新开始
我们通过题目可以知道
70000-65536=4464
所以输出结果为4464
总结
有高级别向低级别转换,可能会出现数据丢失,这种丢失往往是按照一个一个区间进行丢失,
例如上面讲到的有浮点型转换成字符型的时候是按照ascll码区间进行数据丢失的,
而浮点型转换成短整型时是按照短整型的数据区间进行丢失的。
C语言系列之强制类型转换(一)的更多相关文章
- C语言中的强制类型转换
先直接放程序吧,后面还有总结. -------------------------------------------start------------------------------------ ...
- C语言隐式强制类型转换
今天又被精度问题困扰,把最基本的东西忘了. int n = 5; int cnt = 5.5; double sum = (n-cnt); 运算完后sum是 -0.5.不知道什么时候n转换成doub ...
- 吴裕雄--天生自然C语言开发:强制类型转换
#include <stdio.h> int main() { , count = ; double mean; mean = (double) sum / count; printf(& ...
- C++中强制类型转换
C++强制类型转换 C++中的强制类型转换虽然兼容C语言中的强制类型转换.但是并不建议在C++中使用C语言风格的强制类型转换.C++中的强制类型转换共有4个关键字分别是:static_cast,con ...
- C语言结构体的强制类型转换
陈浩师兄03年的一篇博客<用C写有面向对象特点的程序>描述了用C语言来实现类似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换 ...
- C语言中强制类型转换总结
C语言中强制类型转换总结 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...
- C语言笔记 11_头文件&强制类型转换&错误处理&递归
头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处理指 ...
- c语言强制类型转换
一.强制类型转换 printf("3/2+100.5=%f",3/2+100.5);//100.5错误表达 printf (" (float)3/(float)2 ...
- C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
随机推荐
- 百度SMS SDK for .Net
SMS 服务用于向指定的手机号码发送短信. 百度SMS提供了C, JAVA, Python的官方SDK,本项目依据API封装了面向.net的库,目前已经实现了基本的短信发送功能. 项目Github开源 ...
- Jquery购物车jsorder改进版,支持后台处理程序直接转换成DataTable处理
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Swift 算法实战之路:栈和队列
这期的内容有点剑走偏锋,我们来讨论一下栈和队列.Swift语言中没有内设的栈和队列,很多扩展库中使用Generic Type来实现栈或是队列.笔者觉得最实用的实现方法是使用数组,本期主要内容有: 栈和 ...
- win10 uwp 入门
UWP是什么我在这里就不说,本文主要是介绍如何入门UWP,也是合并我写的博客. 关于UWP介绍可以参见:http://lib.csdn.net/article/csharp/32451 首先需要申请一 ...
- 解析 .Net Core 注入 (2) 创建容器
在上一节的学习中,我们已经知道了通过 IServiceCollection 拓展方法创建 IServiceProvider 默认的是一个类型为 ServiceProvider 对象,并且实际提供创建对 ...
- 量化投资:第8节 A股市场的回测
作者: 阿布 阿布量化版权所有 未经允许 禁止转载 abu量化系统github地址(欢迎+star) 本节ipython notebook 之前的小节回测示例都是使用美股,本节示例A股市场的回测. 买 ...
- electron 写入注册表 实现开机自启动
windows平台 首先先明确:开机自启动写入注册表的位置,在KEY_CURRENT_USER\Software\\Microsoft\\Windows\\CurrentVersion\\Run 打开 ...
- 微软Tech Summit 2017,等你来打Call
2017年10月31至11月3日,由微软举办的Tech Summit 2017技术暨生态大会将在北京盛大举办,要在北京连开四天.今年的技术大会看头十足,不仅有大咖级人物带来十二大主题课程,更有三天四场 ...
- R学习笔记 第三篇:数据框
数据框(data.frame)用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同的数据列的数据类型可以相同,也可以不同,但是,每列的长度必须相同.数据框的每列可以有唯一的命名,在已创 ...
- Java多线程高并发学习笔记——阻塞队列
在探讨可重入锁之后,接下来学习阻塞队列,这边篇文章也是断断续续的写了很久,因为最近开始学ssm框架,准备做一个自己的小网站,后续可能更新自己写网站的技术分享. 请尊重作者劳动成果,转载请标明原文链接: ...