例子:

#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. Spring+JUnit4单元测试入门

    (一).JUnit介绍 JUnit是Java中最有名的单元测试框架,多数Java的开发环境都已经集成了JUnit作为单元测试的工具.好的单元测试能极大的提高开发效率和代码质量. Maven导入juni ...

  2. C#生成Code128码

    using System; using System.Collections.Generic; using System.Data; using System.Drawing; namespace C ...

  3. [ZJOI2005]九数码游戏

    [ZJOI2005]九数码游戏 题目描述 输入输出格式 输入格式: 输入文件中包含三行三列九个数,同行的相邻两数用空格隔开,表示初始状态每个方格上的数字.初始状态不会是目标状态. 输出格式: 如果目标 ...

  4. topN 算法 以及 逆算法(随笔)

    topN 算法 以及 逆算法(随笔) 注解:所谓的 topN 算法指的是 在 海量的数据中进行排序从而活动 前 N 的数据. 这就是所谓的 topN 算法.当然你可以说我就 sort 一下 排序完了直 ...

  5. spring mvc 多线程并发

    ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地编写出优美的多线程程序. http://www.xuebuyuan.com/1628190.html 我们 ...

  6. Ceph和Openstack的cinder模块对接方法

    1.创建存储池 在ceph节点中执行如下语句. #ceph osd pool create volumes 2.配置 OPENSTACK 的 CEPH 客户端 在ceph节点两次执行如下语句,两次{y ...

  7. 异步任务--celery发送邮件

    安装两个python包: pip install celery==3.1.25 pip install django-celery==3.1.17 在配置文件settings.py中做如下配置: a) ...

  8. IntelliJ下断点不可用 No executable code found

    情景说明:ant工程+IntelliJ Idea 采取copy编译后的class文件到WEB-INF/classes目录下,断点一直不可用 如图: 网上查了很多资料都说的不够明确,IntelliJ社区 ...

  9. Quart.Net分布式任务管理平台

           无关主题:一段时间没有更新文章了,与自己心里的坚持还是背驰,虽然这期间在公司做了统计分析,由于资源分配问题,自己或多或少的原因,确实拖得有点久了,自己这段时间也有点松懈,借口就不说那么多 ...

  10. getSystemService详解

     android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监听是否有SD卡安装及移除,ClipboardServi ...