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的值强制转换为指向整 ...
随机推荐
- vue 实现 换一换 功能
点击按钮列表页随机获取三个商品并渲染 后台返回的数据为 d为一个数组 数组 arr=[0,1,2]初始值 data:{ list:d, arr:[0,1,2] } 生产随机数 replace:func ...
- localStorage存值取值以及存取JSON,以及基于html5 localStorage的购物车
localStorage.setItem("key","value");//存储变量名为key,值为value的变量 localStorage.key = &q ...
- Maven-环境搭建以及建立Maven项目
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 多的不说,直接开始这章节的主要内容. 1.maven下载地址http://maven.apac ...
- vue-cli 自定义指令directive 添加验证滑块
vue项目注册登录页面遇到了一个需要滑块的功能,网上看了很多插件发现都不太好用,于是自己写了一个插件供大家参考: 用的是vue的自定义指令direcive,只需要在需要的组件里放入对应的标签嵌套即可: ...
- WAMPServer配置修改及问题汇总
备忘录 软件版本wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b -------------------------------------- ...
- ES6的Iterator遍历器
JS表示集合的对象主要有Array.Set.Object.Map,在以前,遍历它们需要使用2种不同的方法,而现在,JS提出了Iterator机制,可以给不同的数据结构提供统一的遍历方法,就是for…o ...
- Windows下安装RabbitMQ
今天正好给自己机器安装rabbitmq,总结下安装经验. 现在国内访问erlang,和 RabbitMQ 官网好像都很难连上.我已下载好了资源,需要的朋友可以下载. 链接: https://pan.b ...
- EF异常探究(An entity object cannot be referenced by multiple instances of IEntityChangeTracker.)
今天在改造以前旧项目时出现了一项BUG,是由于以前不规范的EF写法所导致.异常信息如下: "An entity object cannot be referenced by multiple ...
- java基础解析系列(十)---ArrayList和LinkedList源码及使用分析
java基础解析系列(十)---ArrayList和LinkedList源码及使用分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder jav ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...