本文目录一览:
有关C语言中强制类型转换的论文
《洛阳师范学院学报》2006年02期
C语言中强制类型转换运算符的独特作用
谭庆;雷治军
在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来了很大的方便,在不同类型数据之间进行赋值、运算时发挥了强大的作用.本文主要讨论了此运算符的独特作用.
【作者单位】:洛阳师范学院计算机科学系 河南洛阳471022
【关键词】:强制类型转换运算符;表达式;数据类型;优先级;指针;类型
【分类号】:TP312.1
【DOI】:cnki:ISSN:1009-4970.0.2006-02-024
【正文快照】:
C语言的运算符非常丰富,范围很广泛,共有34种运算符.C语言把括号、赋值、强制类型转换符都作为运算符处理,从而使C语言的运算类型极其丰富,表达式类型多样化.灵活使用各种运算符可以实现在其他高级语言中难以实现的运算.强制类型转换运算符在C语言中有其独特的作用,它为C语言的
地址:
C语言中,函数指针的强制类型转换有什么作用?
函数指针强转尽量不要有,仅用于类型实际是相同的,但定义的变量类型不同,如
另一个程序员写了段代码,要求你提供一个函数指针,类型如下:
typedef int (*ftype)(int,int);
但你写的函数是 unsigned int fun(unsigned int,unsigned int),参数一个有符号,一个无符号,在你知道符号不影响结果的情况下,可以强制转换。
C语言数据类型转换的意义?
的确,对初学者来说,大部分时候其实是用不上强制数据类型转换的。学类型转换的意义最主要是让你理解这个概念,因为虽然你没写出来,但其实自动类型转换几乎每时每刻都在发生。
比如你写表达式 5/0.5,5 是被识别成整型的,0.5 被识别成浮点型,这两个类型间是不能做运算的,所以发生了自动类型转换,把整型提升为了浮点型再继续运算。
学习了类型转换的概念和用法,对你平时写程序排查问题等等都很有帮助的。以后的知识里数据类型转换会出现得更频繁。比如你会遇到 malloc 函数,这个函数返回的是任意类型的指针 void*,你需要做一次强制类型转换来使用:
int* p = (int*)malloc(sizeof(int));
c++类型转换是什么?
1、static_cast:可以实现C++中内置基本数据类型之间的相互转换,enum、struct、 int、char、float等。它不能进行无关类型(如非基类和子类)指针之间的转换。
2、const_cast:const_cast操作不能在不同的种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。
3、reinterpret_cast:(interpret是解释的意思,reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值。)有着和C风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转化任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无须考虑类型安全或者常量的情形。不到万不得已绝对不用。
4、dynamic_cast:
(1)其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。
(2)不能用于内置的基本数据类型的强制转换。
(3)dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回NULL。
(4)使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过。需要检测有虚函数的原因:类中存在虚函数,就说明它有想要让基类指针或引用指向派生类对象的情况,此时转换才有意义。 这是由于运行时类型检查需要运行时类型信息,而这个信息存储在类的虚函数表(关于虚函数表的概念,详细可见Inside c++ object model)中,只有定义了虚函数的类才有虚函数表。
(5)在类的转换时,在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的。在进行下行转换 时,dynamic_cast具有类型检查的功能,比 static_cast更安全。向上转换即为指向子类对象的向下转换,即将父类指针转化子类指针。向下转换的成功与否还与将要转换的类型有关,即要转换的指针指向的对象的实际类型与转换以后的对象类型一定要相同,否则转换失败。
c++类型转换的原因:
c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非 const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区 分这些。
还有一个缺点就是,c风格的转换不容易查找,他由一个括号加上一个标识符组成,而这样的东西在c++程序里一大堆。所以c++为了克服这些缺点,引进了4种类型转换操作符。