C语言的类型转换,一个是强制类型进行转换,而在这里要介绍的是自动的数据类型的转换,自动的数据类型转换很多时候是发生在多种数据类型混合使用的时候就会进行类型的转换,这样就会带来不能控制的结果,所以必须进行学习。

1、算术进行类型转换

在进行算术运算(加减乘除、相除、大小)的时候,当数据类型不一致的时候,就会发生数据类型的转换。

    if (- < (unsigned int))
{
printf(" -1 < (unsigned int)1 \n");
}
else
{
printf(" -1 > (unsigned int)1 \n");
}

输出结果为:-1 > (unsigned int)1,

类型转换的准则是:占据较大字节的数据类型以他为准,其他较小字节数的数据类型全部转换为较大字节数的数据类型,当一个 int 类型与一个 char

类型的数据进行相加的时候,首先需要将 char 类型的转换int 类型(四个字节)然后再进行数据的相加。

而当出现无符号计算的时候,就需要将数据转换为无符号类型的,当 int 类型的 -1 转换为无符号的之后,就变为一个很大的正数,所以才会出现 -1 >(unsigned int)1 的情况。

而数据中,1 的数据类型没有被明确指定的话,就全部以默认为 int 类型。

2、赋值发生类型转换

进行赋值操作的时候,当两边的数据类型不一致的时候,需要将右边的数据类型转换为左边数据类型。

int a = ;
char b = ;
a = b;
printf("a = %d\n", a);

输出结果为: a  = 2;

这里需要注意的时候,当赋值的右边的数值比左边类型的最大值大的时候,就会出现错误的数据,这里需要明确注意:

int a = ;
char b = ;
b = a;
printf("b = %d\n", b);

输出的结果是:b = -128.例子就是右边的数值大于 char 类型最大允许的数据范围(char 运行的范围-128~127,256个数值)。128 明显是大于 127,所以就是将128 - 127 = 1;是超过了 char 类型允许范围 1,所以就会数据就会溢出,所以输出的值,就是 -128;


总结:

数据类型转换是发生在多数据类型混合中,而转换的原则是:数据转换的方向是朝着精度更高、长度更长的方向进行转换。

C语言数据类型的转换的更多相关文章

  1. C语言数据类型的转换(隐式转换)

    算术运算符中的转换规则: double ←── float 高↑long↑unsigned↑int ←── char,short 低 注意: 图中横向箭头表示必须的转换,如两个float型数参加运算, ...

  2. 语言基础:C#输入输出与数据类型及其转换

    今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console ...

  3. Java的基本数据类型与转换

    1.1 Java为什么需要保留基本数据类型 http://www.importnew.com/11915.html 基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/ ...

  4. Java学习笔记之:Java数据类型的转换

    一.介绍 数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转换顺序不受 ...

  5. php之数据类型自动转换

    1:概述 ---php是一种弱类型的语言,它可以根据运行环境的变化而自动进行数据类型的转换 1.1转换成布尔类型的原则 以下值都将转换成布尔类型中的false: A.布尔类型的false; B.空字符 ...

  6. Spark PySpark数据类型的转换原理—Writable Converter

    Spark目前支持三种开发语言:Scala.Java.Python,目前我们大量使用Python来开发Spark App(Spark 1.2开始支持使用Python开发Spark Streaming ...

  7. Java基础之数据类型和转换

    一.常见的数据类型分类 1.java中基本数据类型分为三大类,即布尔类型,字符型,数值型.其中数值型又分为整型和浮点型.引用数据类型分为类,接口,数组,枚举,注解.具体如下: 注:一个字节 = 8位 ...

  8. R语言数据类型

    R语言数据类型[转!!]Zhao-Pace  https://www.cnblogs.com/zhao441354231/p/5970544.html   R语言用来存储数据的对象包括: 向量, 因子 ...

  9. Go语言数据类型

    目录 基本数据类型说明 整型 浮点型 字符 字符类型本质探讨 布尔型 字符串 指针 值类型与引用类型 基本数据类型默认值 基本数据类型相互转换 注意事项 其他基本类型转string类型 string类 ...

随机推荐

  1. [JSOI2012][bzoj4332] 分零食 [FFT]

    题面 传送门 思路 首先,这个数据如果没有这么大,我们还是可以做朋友的...... 设$dp\left[i\right]\left[j\right]$代表前j个零食分给了前i个人的方案数 那么dp方程 ...

  2. [NOI2012][bzoj2879] 美食节 [费用流+动态加边]

    题面 传送门 思路 先看看这道题 修车 仔细理解一下,这两道题是不是一样的? 这道题的不同之处 但是有一个区别:本题中每一种车有多个需求,但是这个好办,连边的时候容量涨成$p\lbrack i\rbr ...

  3. [LVS] 用keepalived实现LVS NAT模式高可用性

    默认前提是LVS已经可以正常工作了. 因为是NAT模式,RS的路由要指向LVS的接口地址,所以需要一个统一的后台浮动地址,使得RS都指向这个浮动IP.否则在切换时,会导致RS回包到DOWN掉的LVS上 ...

  4. 转载:LeetCode:5Longest Palindromic Substring 最长回文子串

    本文转自:http://www.cnblogs.com/TenosDoIt/p/3675788.html 题目链接 Given a string S, find the longest palindr ...

  5. svg图片做图标字体

    https://icomoon.io 这个网站,把svg变图标

  6. Gerrit使用简介

    Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面. Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代 ...

  7. js常用方法 备用

    /* function obj$(id)                      根据id得到对象 function val$(id)                      根据id得到对象的值 ...

  8. IMAGE_OPTIONAL_HEADER32 结构作用

    IMAGE_OPTIONAL_HEADER32 结构作用 接 着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构,正如名字的意思,这是一个可选映像头,是一个可选的结构,但是呢,实际上上节课 ...

  9. hdu 3657 最小割的活用 / 奇偶方格取数类经典题 /最小割

    题意:方格取数,如果取了相邻的数,那么要付出一定代价.(代价为2*(X&Y))(开始用费用流,敲升级版3820,跪...) 建图:  对于相邻问题,经典方法:奇偶建立二分图.对于相邻两点连边2 ...

  10. koa2 从入门到进阶之路 (二)

    之前的文章我们已经能够在本地启动一个简单的项目,本章我们来看一下 koa 路由,get 传值,动态路由. 一.Koa 路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP ...