精华内容
下载资源
问答
  • 若参与运算的成员类型不同,则先转换成同一类型,然后进行运算 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算 1. **若两种类型的字节数不同,转换成...

    1.类型装换

    在这里插入图片描述
    在这里插入图片描述

    2.隐式转化

    • 若参与运算的成员类型不同,则先转换成同一类型,然后进行运算

    • 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算

      1. 若两种类型的字节数不同,转换成字节数高的类型
      
      2. 若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
      
    • 所有的浮点运算都是以双精度进行的,即使是两个float单精度量运算的表达式,也要先转换成double型,再作运算.

    • char型和short型参与运算时,必须先转换成int型

    • 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。

         如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入
      
    • 函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。

    • 函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。

    3. 例子

    	unsigned int 	a = 30;
    	int 			b = - 130;
    	
    	if ( a > b )
    		printf("a > b\r\n");
    	if ( a < b )
    		printf("a < b\r\n");
    

    结果如下:

    wll@wll-linux:~/code/test$ ./cal
    a > b
    
    • 根据前面提到的规则:不同的运算要先转换为同一类型才能运算,短字节要转为长字节类型,长度相同时,有有符号转为无符号,所以-130转为无符号,将是一个很大的数。
    	unsigned short a = 0;
    	unsigned int   b = 0x12345678;
    	
    	a = b;
    	
    	printf("b:0x%x, a:0x%x\r\n", b, a);
    	
    

    结果如下:

    wll@wll-linux:~/code/test$ ./cal
    b:0x12345678, a:0x5678
    
    • 赋值运算等号右边的类型会转换为左边的类型,如果左边的类型比右边的短,则数据被截断后赋值
    unsigned char test(unsigned short x)
    {
    	printf("x: 0x%x\r\n", x);
    	
    	return x;
    }
    
    unsigned short a = 0;
    unsigned int   b = 0x12345678;
    
    
    printf("a:0x%x\r\n", a=test(b));
    

    结果如下:

    wll@wll-linux:~/code/test$ ./cal
    x: 0x5678
    a: 0x78
    
    • 从结果可以看出“返回表达式类型转换为返回值类型”,函数参数传递的时候实参转换为形参的类型后,赋值给形参

    5.代码误区

    由于不熟悉不同类型间运算规则,导致的代码bug,大部分人应该都遇到过,举例如下:

    	unsigned int a = 1;
    	unsigned int   b = 100;
    	
    	for ( b; b-a >= 0; b--)
    	{
    		printf("b-a:0x%x\r\n",b-a);
    	}
    	
    

    以上代码并不会按照预期运行,而是出现了死循环:

    无符号数想减,结果永远是无符号数,而无符号数,是不会<0的,所以for循环不会通知。

    保持语义不变的情况下可以改为如下:

    	
    	for ( b; b >= a; b--)
    	{
    		printf("b:0x%x\r\n",b);
    	}
    	
    

    另外,函数参数传递过程中的类型不一致导致的问题,也是层出不穷,待笔者日后遇到再进行补充

    6.参考

    https://www.cnblogs.com/weiyouqing/p/9090542.html

    展开全文
  • 2、在赋值运算时,如果赋值号两边的数据类型不同,赋值号右边的类型将转换为左边的类型。如果右边的数据类型长度比左边长时,将丢失一部分数据,(如65537用int表示,为0000 0000 0000 0001 0000 0000 0000 0001,...
  • 在程序中经常会遇到不同类型的数据进行运算,如果一个运算符两侧的数据类型不同,则会先自动进行数据类型转换,使运算符两侧的数据类型相同,然后再进行运算,因此整型、实型、字符型数据间都可以进行混合运算 规律...

          在程序中经常会遇到不同类型的数据进行运算,如果一个运算符两侧的数据类型不同,则会先自动进行数据类型转换,使运算符两侧的数据类型相同,然后再进行运算,因此整型、实型、字符型数据间都可以进行混合运算

         规律为:

           (1)+、-、*、/、运算符两侧中有一个为float或double型,结果都为double型数据。

           (2)如果 int型与float型数据进行运算,会先把int型和和float型数据转换为double型,然后再进行运算,结果是double型

           (3)字符(char)型数据与整形数据进行运算,就是把字符型数据的ASCLL代码与整形数据进行运算。如:12+'A'等效于12+65结果为77,字符型数据与实型数据进行运算,则会将字符型的ASCLL代码转换为double型数据然后再进行运算。

          以上的转换都是由编译器自动完成转换的,知道其转换的原理即可,不用自己进行转换。

    展开全文
  • C语言不同数据类型间的混合运算+常见数据类型

    万次阅读 多人点赞 2017-07-29 21:24:41
    在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下: 1. +. -. *. /运算的两个数中有一个数为float或double...

    在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下:

    1. +. -. *. /运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算;

    2. 若int型与float或double型数据进行运算,先将int型和float型转换为double型,然后进行运算,结果为double型;

    3. Char型与int型数据进行运算,就是把字符的ASCII码与整型数据进行运算;

               如:12+'A'=12+65=77

    4. 两个int型相除,不管是否有余数,结果都为整型;如:5/10 输出是整数部分:0

    5. 强制类型转换的一般形式为:(类型名)(表达式),将表达式整体的输出结果转换,若写成(int)x+y,则是将x先转换为整型,再与y相加,

              如上式中: 5/10的输出结果为:0

                                  5.0/10的输出结果为:0.5

                                  (fioat)(5/10)的输出结果为:0.00

                                (float)5/10的输出结果为:0.5

     

         这里顺便附上C语言的常见数据类型:

     

     

     

    展开全文
  • 在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下: 1. +. -. *. /运算的两个数中有一个数为float或double...

    在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下:

    1. +. -. *. /运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算;

    2. 若int型与float或double型数据进行运算,先将int型和float型转换为double型,然后进行运算,结果为double型;

    3. Char型与int型数据进行运算,就是把字符的ASCII码与整型数据进行运算;

               如:12+'A'=12+65=77

    4. 两个int型相除,不管是否有余数,结果都为整型;如:5/10 输出是整数部分:0

    5. 强制类型转换的一般形式为:(类型名)(表达式),将表达式整体的输出结果转换,若写成(int)x+y,则是将x先转换为整型,再与y想加,

              如上试中: 5/10的输出结果为:0

                                  5.0/10的输出结果为:0.5

                                  (fioat)(5/10)的输出结果为:0.00

                                (float)5/10的输出结果为:0.5

    这里顺便附上C语言的常见数据类型:

     

     

    转自:https://blog.csdn.net/Fengjingdisan/article/details/76358642 

    展开全文
  • 类型数据之间的混合运算

    千次阅读 2019-03-17 10:50:25
    自动转换即当不同类型的数据进行混合运算的时候,编译系统将会按照一定的规则自动完成。而强制类型转换是由程序员通过编程强制转换的数据类型。 自动转换的规则 1 当参加运算的数据的类型不同时,编译系统会自动将...
  • 数据类型混合运算与类型转换

    千次阅读 2017-10-10 22:21:26
    「C语言」数据类型混合运算与类型转换  深入学习C语言时,有必要先了解一下数据类型的概念,以及它们之间的混合运算与类型转换。  本篇文章便是根据《C语言程序设计教程》和在线翻阅资料后整理而出。...
  • <br />不同数据类型混合运算的转换规则 不同数据类型的数据进行预算时,必须先转换成同一数据类型,然后才能进行运算。转换的规则如下图所示: 图中横向向左的箭头表示必定的转换,如字符数据必须...
  • +、-、*、/运算的两个数中有一个数为float或double型,结果为double型,因为系统将所有的float型数据转换为double类型数据再进行计算。 如果int型与float或double型数据进行计算,先把int型和float型数据转换为...
  • C语言-不同类型数据间的混合运算

    千次阅读 2015-08-05 14:40:05
    1、如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型。
  • C语言的基本数据类型,适合初学者阅读学习,也适用于国家二级计算机考试复习备考
  • C51扩充数据类型

    千次阅读 2019-12-19 13:43:04
    C51扩充数据类型 单片机内部有很多特殊功能寄存器(Special Function Register),每个寄存器在单片机内部都分配有唯一的地址,一般会根据寄存器功能的不同给寄存器赋予不同的名称。当需要在程序中操作这些特殊功能...
  • 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则: (1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 (2)转换按数据长度增加的方向进行,以保证精度不降低...
  • 不同数据类型间的混合运算
  • 混合类型运算规则

    2020-07-18 13:09:34
    在表达式遇到不同数据类型混合运算时,要求不同类型的数据要先转换成同一类型然后才能进行运算。默认编译器会有个规则进行自动转换: 自动转换遵循以下规则: 1) 若参与运算的两个参数类型不同,则先转换成同一...
  • 混合运算数据类型的转换。

    千次阅读 2018-06-15 21:55:59
     在算术运算和关系运算中如果参与运算的操作数类型不一样,则系统会对其进行类型转换,这是隐含转换,转换的原则就是将低类型数据转换为高类型数据。各类型从低到高依次为char,short,int,unsigned int,long,...
  • 3.7 不同类型数据混合运算 表达式字节数为4说明整型与单精度浮点型运算结果为单精度浮点型 printf"bytes of (float)1.1+1.0 is %d\n,sizeof(float)1.1+1.0; //bytes of (float)1.1+1.0 is 8 表达式字节数为8说明单...
  • 不报错进行了深入探究从而引申出java基本类型之间赋值与运算操作的规律通过自己制作的图例分析达到对不同基本数据类型之间的赋值与运算结果的正确判断不会再出现事实而非的回答知道运算底层好了言归
  • 不同数据类型转换分为自动转换和强制转换,此文只讨论自动转换的情形; C语言中float类型安排4个字节,double类型安排8个字节,int类型为四个字节。在一次调试中博主发现这样的情形; sizeof为c语言中的一个...
  • 我们一般不会将数字类型数据和布尔类型数据进行运算, 也不会将字符串类型数据和布尔类型进行运算, 这样做毫无意义. 我们需要借由 Python 提供的算术运算符来完成变量之间的运算, Python 提供了两种:算术...
  • 一、存储形式  在C中,整型和字符型(以ASCII码表示)都是以 二进制补码存放的,正数的补码为其本身,负数的补码为其绝对值按位取反+1;如1,以00000001存放,-1,... 范围取决于存储数据的字节数,int(4),ch
  • 1.字符型数据 1.1字符常量 定义:用单撇号括起来的一个字符。 特殊字符:以“\”开头的字符序列。如:"\n",代表换行符,这是控制字符不能再屏幕上显示。转义字符及其作用如下表1.1。 表1.1说明:‘\101’代表ASCII...
  • C语言不同数据混合运算类型转换

    千次阅读 2012-11-12 13:38:41
    有两个通用的指导原则: 1.为了防止数据精度损失,如果有必要的话,类型总是被提升为较宽的类型 2.所有含有小于整数类型的算术表达式在计算之前其类型被提升为整形数据类型
  • python中常见的数据类型:整型、浮点、布尔、字符串、列表、元组、集合、字典、空(None)等 1、整数类型 与数学中整数的概念一致 -可正可负,没有取值范围限制。pow(x,y)函数:计算,想算多大算多大 -4种进制...
  • 各类数值型数据间如何混合运算

    千次阅读 2014-03-19 22:40:15
    整型(包括int,short,long)、实型(包括float,double)可以混合...在进行运算时,不同类型数据要先转换成同一类型,然后进行运算。转换的规则按图3.10所示。 图3.10 图中横向向左的箭头表示必定的转换,如字符数
  • 1、变量赋初值 2、不同数据类型之间的混合运算

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,732
精华内容 26,692
关键字:

不同数据类型的混合运算