c语言数据类型的转换
⑴ c语言数据类型如何转换
不是有强制类型转换吗?
强制类型转换 强制类型转换
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
1、显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
type(<expression>)
或
(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
2、隐式强制类型转换
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//执行本句后,nVar的值为3,而dVar的值仍是3.88
1,若已知x,y为double类型,则表达式:x=1,y=x+3/2结果是多少啊?
因为x,y都是double型,所以执行了y=x+3/2这个语句后,会输出小树部分,double型默认的是小数点后几位我忘了,你自己调试下,就会明白了!
⑵ c语言数据类型转换
C语言算术表达式的计算,在计算过程中,每一步计算所得结果的数据类型由参与运算的运算对象决定,相同数据类型的两个对象运算,结果数据类型不变,不同数据类型的运算对象进行运算,结果的数据类型由高精度的运算对象决定。精度的高低:double>float>int
需要注意的是,数据类型的转换是在计算过程中逐步进行的,整个表达式结果的数据类型一定与表达式中出现的精度最高的数据相同,但是具体得到数据值是逐步得到的,例如:int x=1,y=3; double k=1573.267;
x / y * k
这个表达式计算结果的数据类型是double, 计算结果的答案是 0.0
因为在第一步 x/y 的计算中 结果是一个整型数据 0
第二步计算 0 * 1573.267 结果是一个double类型的数据,但数值是0.0
也就是说,算术表达式计算结果的数据类型与运算的优先级没有关系,一定具有表达式中精度最高的数据类型,但是具体得到数据结果数值,与优先级可就有关系啦。
⑶ c语言中数据类型的转换
真奇怪
⑷ c语言数据类型的转换
double<float
^
long
^
unsigned
^
int<char/short
箭头为转换方向
C中不同数据类型间运算时默认向高精度的数据类型转换
⑸ C语言中数据类型转换的方式有几种
C语言中数据类型转换的方式有两种:自动类型转换,由C编译系统自动完成。还有一种是“强制类型转换”由程序员在代码中明文写清楚。
⑹ C语言中数据类型变换应该怎样变换
隐式转换就是不带转换类型的转换,如int转float你可以这样子float a ;int b = 4;
a=b就是隐式转换,而a = (float)b就是显示转换。区别在于当向下转换时如果不显示转换就会有问题,如float a = 4.5; int b = a;这里就可能报错,因为int可以自动上升为float,但由float不能自动转化为int,这里就需要显式转换,即int b = (float)a才是最保险的;所以显式转换肯定不会出错,但隐式转换就说不定了。
⑺ 请问C语言如何实现数据类型的强制转化
强制类型转换
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
1、显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
type(<expression>)
或
(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
2、隐式强制类型转换
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//执行本句后,nVar的值为3,而dVar的值仍是3.88
1,若已知x,y为double类型,则表达式:x=1,y=x+3/2结果是多少啊?
因为x,y都是double型,所以执行了y=x+3/2这个语句后,会输出小树部分,double型默认的是小数点后几位我忘了,你自己调试下,就会明白了!
⑻ C语言中有关数据类型的转换的问题
恩,
可以,
double长度大于float,
不会出现截断问题,
反过来如果将double赋给float有可能会发生截断问题...
⑼ C语言数据类型的转换!!规则是什么!
题目是选B吧,定义c为float,结果也是float,编译时一般会有警告的,不会那么写,题目只是想考细节,编程时会用强制转换语法,不仅能从低精度强制转换为高精度,也可以根据需要反过来
⑽ c语言中不同数据类型的相互转化怎么做
在C语言中,不同数据类型在进行运算时首先要转换成同一类型,一种是自内动转换,二是强容制转换,如(int)a
将a强制转换为int型
转换原则:箭头是转换方向
char,short->int->unsigned->long,float->double
说这个题之前要接受一个事实:不同计算机上运行此程序结果会不一样,原因和你是好多位计算机有关系,在很多书上int占两个字节,而在有些计算机却占4个字节,具体是好多你可以用sizeof(int)测试一下,那我的计算机就占4个字节,现在再看题:c=x+a
x为长整型a为整型,运算之前先将a自动转换为长整型,x=-5,计算机存储为0FFFFFFFBh,a=3,x+a=0FFFFFFFEh
输出格式是%u
也就是以十进制无符号形式输出,结果为4294967294而不是65534。d=y+b,a=3就不用多说明了,最后用%f输出单精度或双精度浮点数,其默认为6位小数,要想控制显示位数用%m.nf,具体看看书哈