例子:

#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语言系列之强制类型转换(一)的更多相关文章

  1. C语言中的强制类型转换

    先直接放程序吧,后面还有总结. -------------------------------------------start------------------------------------ ...

  2. C语言隐式强制类型转换

    今天又被精度问题困扰,把最基本的东西忘了. int n = 5; int cnt = 5.5; double sum = (n-cnt);  运算完后sum是 -0.5.不知道什么时候n转换成doub ...

  3. 吴裕雄--天生自然C语言开发:强制类型转换

    #include <stdio.h> int main() { , count = ; double mean; mean = (double) sum / count; printf(& ...

  4. C++中强制类型转换

    C++强制类型转换 C++中的强制类型转换虽然兼容C语言中的强制类型转换.但是并不建议在C++中使用C语言风格的强制类型转换.C++中的强制类型转换共有4个关键字分别是:static_cast,con ...

  5. C语言结构体的强制类型转换

    陈浩师兄03年的一篇博客<用C写有面向对象特点的程序>描述了用C语言来实现类似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换 ...

  6. C语言中强制类型转换总结

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

  7. C语言笔记 11_头文件&强制类型转换&错误处理&递归

    头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处理指 ...

  8. c语言强制类型转换

    一.强制类型转换 printf("3/2+100.5=%f",3/2+100.5);//100.5错误表达 printf ("    (float)3/(float)2 ...

  9. C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

随机推荐

  1. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出

    手绘视频最终的生成物是视频文件,前面几篇主要讲的是手绘视频的创作部分,今天讲一下手绘视频的导出问题.主要以 UWP 为例,另外会介绍一些 Web 端遇到的问题和解决方法. 如上所述,手绘视频在创作后, ...

  2. 手把手教你解决无法创建 JPA 工程的问题

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703803.html ------------------------------------ ...

  3. 关于echarts、layer.js和jqGrid的知识点

    使用echarts和layer.js直接去官方文档,能解决大部分问题. 但是有些问题,解释不够清楚,在这里记录一下. 1.echarts的使用 第一点:关于echarts的labelline在数据为零 ...

  4. OOAD-设计模式(四)结构型模式之适配器、装饰器、代理模式

    前言 前面我们学习了创建型设计模式,其中有5中,个人感觉比较重要的是工厂方法模式.单例模式.原型模式.接下来我将分享的是结构型模式! 一.适配器模式 1.1.适配器模式概述 适配器模式(Adapter ...

  5. 队列(存储结构数组)--Java实现

    /*队列:其实也是一种操作受限的线性表 *特点:先进先出 *队尾指针:负责元素的进队 *队头指针:负责元素的出队 *注意:普通队--容易浪费空间,一般队列使用最多的就是循环队列--指针环绕 *队列的实 ...

  6. 打包zip下载

    //首先引入的文件为org.apache的切记不是jdk的import org.apache.tools.zip.ZipOutputStream;import org.apache.tools.zip ...

  7. java 调用webservice接口

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  8. MongoDB原子操作

    MongoDB原子操作常用命令: 1. $set: 用来指定一个键并更新键值,若键不存在则创建并赋值. { $set : { field : value } } 2. $unset: 用来删除一个键. ...

  9. Memcached统计命令

    1. Memcached stats命令: Memcached stats 命令用于返回统计信息例如 PID(进程号).版本号.连接数等. 语法: stats 输出信息说明: pid: memcach ...

  10. 二、Tomcat配置以及IDEA运行第一个Jsp项目——JavaWeb点滴

    一.Tomcat配置环境变量 tomcat从官网下载最新的即可,本人下载的是安装版本.在安装过程中需要设置用户名和密码以及选择相应的JDK的安装目录.这些都比较简单直接下一步即可,安装完成之后就是配置 ...