C语言的自动类型转化

原创 2018年04月16日 10:40:24

C语言赋值过程中,如果待转换的值和目标类型不匹配怎么办?这取决于转化涉及的类型,规则如下:

1、如果目标类型是无符号整型时,且待赋的值是整数时,额外的位将被忽略。例如:如果目标类型是8位的unsigned char,则最终被赋的值是原始值%256;

char ch = 1107;
print("ch = %c \n", ch);  //输出为ASIC码值为1107%256=83的字符,即S

unsigned int i = 4294967296;  //1111 1111 1111 1111 1111 1111 1111 1111 = 2^32
cout << i << endl;   //输出为:0

2、如果目标类型是有符号整形,且待赋的值是整数时,结果因实现而异;

int i = 4294967295;  //1111 1111 1111 1111 1111 1111 1111 1111
cout << i << endl;   //输出为:-1

3、如果目标类型是整形,且待赋的值是整数,结果是未定义的;

     如果把一个浮点值转化成整数类型会怎样?当浮点类型降级为整数类型时,原来的浮点值会被截断。例如:23.12和23.99都会被截断为23,-23.55会被截断为-23;


ps:上面的测试使用的IDE是C-Free,gcc版本4.9.2


参考:

[1] 我对补码的理解

[2]C primer plus P125 














版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/baidu_35679960/article/details/79957274

C语言那些事儿

互联网上首家使用C99录制的C语言教程。 全面、专业。最标准的C语言教程。
  • 2016年05月08日 10:41

C语言中数据类型的自动类型转换

非常的重要的声明: 这篇博客的内容,主要参考网友的博客。 尊重知识产权,尊重原创!一、 C在以下四种情况下会进行隐式转换: 算术运算式中,低类型能够转换为高类型。 赋值表达式中,右边表达式的值自动...
  • QCZTZSWT357
  • QCZTZSWT357
  • 2017-06-16 21:05:53
  • 727

C++类型转换之四种cast操作符

类型转换既是将一种数据类型转换为另外一种数据类型,从而改变该变量的表示方式以及操作。具有标准定义类型的简单数据类型(如int、double)之间的转换可以使用传统的转换方式,既强制转换,也是C语言风格...
  • xiaoyu90520
  • xiaoyu90520
  • 2013-07-18 16:00:41
  • 758

c语言的隐式(自动)数据类型转换

一.算术运算符中的转换规则: double ←── float 高 ↑ long ↑ unsigned ↑ int ←── char,short 低 注意:图中横向箭头表示必须的转换,如两个floa...
  • u010815257
  • u010815257
  • 2015-12-04 19:37:29
  • 2357

json_json数据与数组之间的互相转换

  • jankin6
  • jankin6
  • 2017-06-21 20:56:55
  • 222

深入理解C语言类型转换

C语言类型转换分为两种: 显式强制类型转换 隐式自动类型转换 也许有人遇到过一个负数经过类型转换后可能变成一个很大的整数之类,却不知道实质上是因为什么。希望下面的解释能够解决这个疑惑。下面从详细介绍一...
  • simple_the_best
  • simple_the_best
  • 2015-09-13 21:50:30
  • 2153

C语言类型转换详解

前言:C语言的类型转换是很多初学者的难点,但也是语言的重点。在此,介绍一下C语言类型转换的知识。注意本文是以gcc编译器为基准。 一、            变量 1、 基本类型变量 说到基本类...
  • zhangzhi123456789
  • zhangzhi123456789
  • 2015-11-02 17:07:54
  • 5494

c 语言类型转化

● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把ch...
  • lidaqiang99
  • lidaqiang99
  • 2011-08-02 22:50:23
  • 332

C语言&nbsp;类型转化

C语言的类型转化分两种:自动类型转换、强制类型转换。 自动类型转换发生在下列三种情况下:         1、混合运算(不同类型的数据进行运算)               混合运算时的自动类型转...
  • life_liver
  • life_liver
  • 2013-01-29 21:18:17
  • 153

c语言中数据类型的自动转换原则

由低级向高级转换的原则 最近几天参加一公司招聘,其中有一道笔试题是这样的: 如下程序的输出结果是? #include int main() { unsigned int a=6; int b=...
  • MyLinChi
  • MyLinChi
  • 2016-10-12 22:18:25
  • 1778
收藏助手
不良信息举报
您举报文章:C语言的自动类型转化
举报原因:
原因补充:

(最多只允许输入30个字)