C语言数据类型的自动转换和强制转换有什么区别

2021-03-04 11:41:31 字数 3524 阅读 1565

1楼:學雅思

一、指代不同

1、自动转换:参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2、强制转换:是通过类型转换运算来实现的。

二、方式不同

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

2、强制转换:功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

三、特点不同

1、自动转换:是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。

2、强制转换:所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

2楼:溅糁埤

c语言数据类型转换分自动转换和强制转换两类。

自动转换自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:

1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

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

3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

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

5.在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。 如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度, 丢失的部分按四舍五入向前舍入。

强制类型转换

强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如: (float) a 把a转换为实型(int)(x+y) 把x+y的结果转换为整型在使用。

强制转换时应注意以下问题:

1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。

2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

c语言中,数据类型转换前与转换后数据的区别

3楼:匿名用户

数据类型转换的一般格式为:(type_name) expression

type_name为要转换到的数据类型,expression为表达式。例如:

(float) a; //把a转换为实型

(int)(x+y); //把x+y的结果转换为整型

(float) 100; //将一个常量转换为实型

【示例】将整数转换为浮点数:

#include

int main()

运行结果:

value of mean : 3.400000

需要注意的是,类型转换运算符( )的优先级高于/,(double) sum / count会先将 sum 转换为 double 类型,然后再进行除法运算。如果写作(double) (sum / count),那么运行结果就是 3.000000。

这种由程序员显式进行的转换称为强制类型转换。除了强制类型转换,在不同数据类型的混合运算中编译器也会隐式地进行数据类型转换,称为自动类型转换。

自动类型转换遵循下面的规则:

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

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

所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

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

在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。

4楼:匿名用户

你可以从内存单元角度来理解这个问题:

假设:地址0x1为起始的内存单元;

当你用(int *)强制转化该地址0x1时,计算机会把0x1开始的四个字节理解为一个整形;

当你用(char *)强制类型转化该地址0x1时,计算机会把0x1开始的1个字节理解成一个字符型,你就可以做相应的操作...

int m = 0;

char c;

c = (char *) m; //这里的m可以理解成 &m从上面来看:强制类型转化前后,地址是不变的,变化的只是字节大小(计算机理解的)...然后变化前后内存单元各位上的0 1位值也是不变的。

c语言中各种数据类型有什么区别?

5楼:匿名用户

1、数据计算类型不同。基本数据类型分为三类:整数型(定点型)、实数型(浮点型)和字符型。

除了基本数据类型,还有构造类型(数组、结构体、共用体、枚举类型)、指针类型、空类型void。

3、不同数据类型占用内存的大小不同。short占2byte,int占4byte,long占4byte,float占2byte,double占8byte,char占1byte(不同的平台可能占用内存大小不一样,具体的可以用sizeof 测试下)。

6楼:匿名用户

1、c语言中数据类型分类如下:

2、最主要的区别就是数据计算类型不同。

c语言中基本数据类型分为三类:整数型(定点型)、实数型(浮点型)和字符型。当然,除了基本数据类型,还有构造类型(数组、结构体、共用体、枚举类型)、指针类型、空类型void。

最常见的基本数据类型,也就是整数型、浮点型和字符型。

不同数据类型占用内存的大小。short占2byte,int占4byte,long占4byte,float占2byte,double占8byte,char占1byte(不同的平台可能占用内存大小不一样,具体的可以用sizeof测试下)。

7楼:韩萧_寒

告诉计算机所要存储运算的是什么类型的数,例如你定义 int m; 那么 printf("m=%d",1/10); 输出地结果会是0,因为int是整型,而如果是float m,那么结果就会输出0.1,float是浮点型。

8楼:爱在没理那

肯定有不同点的吧,数据结构不一样的,运行需要也不同的啊

9楼:匿名用户

基本类型有整形,实型(浮点型)分单精度型和双精度型,字符型和枚举类型;构造类型有数组类型、结构体类型、共用体类型;指针类型,空类型

10楼:匿名用户

在变量中如果没有关键字的话与存储长度有关

如果前面还加了其他关键字则还会与存储的位置相关

c语言中数据类型转换的方式有几种?

11楼:听不清啊

c语言中数据类型转换的方式有两种:自动类型转换和强制类型转换。

C语言中数据类型转换的方式有几种

1楼 听不清啊 c语言中数据类型转换的方式有两种 自动类型转换和强制类型转换。 简述c语言中数据类型转换有哪几种方法 2楼 匿名用户 c中好像只有强转吧 类型名 待转数据 3楼 匿名用户 强制转换 自动提升 4楼 匿名用户 data type casting 想怎么转就怎么转,没有几种之说,不要死学...

类比法和转换法之间有什么区别,等效替代法和类比法有何区别?有联系吗?

1楼 浮云 类比法是指参考类似的已解决的题目去解决这个题目,转换法是指直接进行相互转换进而解决。 等效替代法和类比法有何区别?有联系吗? 2楼 今夜0星辰 用水压类比电压 求串联电路的总电阻是等效替代法 就举个例子 你好好体会吧 3楼 国服第一法鸡 等效替代法指替代后完全可以替代原来的作用的研究方法...

c语言中可以进行位运算的数据类型有什么

1楼 匿名用户 float 和double不可以 剩下的几个都行 2楼 李 只能用于整型操作数,即char short int long类型 c语言位运算有什么作用 3楼 逍遙侠 可以用位运算做文件加密,比如一个文档,让其中的内容位运算,再打开就会显示一堆乱码,除非按特定的位运算变回来 c语言逻辑运...