C++中显示的类型转换
来源:互联网 发布:淘宝上怎么挣钱 编辑:程序博客网 时间:2024/04/30 05:41
C++是希望用户能够尽最大的定义正确的类型,而少用显示的类型转换,以致不用显示的类型转换
/*
*C++显示的强制类型转换,区别与C
*static_cast --- 数值类型之间、有一方是void* 的指针类型之间
*const_cast --- 用于临时去掉const、volatile限制
*reinterpret_cast --- 任意两种指针类型之间,指针与数值类型之间
*dynamic_cast --- ???
*转换的形式: cast-name<type-name>(expression)
*/
#include <iostream>
using namespace std;
#include <cstdlib>
int main()
{
/*在之前用的一些强制类型转换都是C风格的,而C++为了尽量少用强制类型转换,
用了自己独特的风格,如上所述。*/
/* int m = static_cast<int>(45.678); //int(45.678)是C++风格 而(int)45.678是C风格
cout << "m = " << m << endl;
int* p= static_cast<int*>(calloc(5,sizeof(int)));
for(int i = 0; i != 5; i++)
cout << *(p+i) << ' ';
cout << endl;
*/
const int n = 110;
cout << "原值n = " << n << endl;
int* q = const_cast<int*>(&n);
cout << q << endl;
*q = 112;
cout << "修改n = " << n << endl;
/* const int k = m;
cout << "原值k = " << k << endl;
const_cast<int&>(k) = 678;
cout << "修改k = " << k << endl;
m = int(); //零初始化
cout << "m = " << m << endl;
int l(668); //直接初始化,要区别int l()这是函数
cout << "l = " << l << endl;
*/
double* r = reinterpret_cast<double*>(q); //(double*)q;
cout << r << endl;
float f = 67.88;
int* pt = reinterpret_cast<int*>(&f); //(int*)&f;
cout << *pt << endl;
f = static_cast<float>(*q); //(float)(*q);
cout << f << endl;
return 0;
}
- C++【显示类型转换】
- C++中显示的类型转换
- 【C#】中Decimal类型转换的问题
- C中常见的类型转换
- C++中显示类型转换
- C/C++: C++ 中 static_cast 类型转换的含义
- C语言中类型转换
- 类型转换(c中)
- ANSI C中类型转换
- C/C++中类型转换
- C语言中类型转换
- JavaScript的显示类型转换
- java中显示类型转换和隐式类型转换
- C#的类型转换:显示类型转换、强制类型转换、不兼容类型转换
- C++中各种类型的转换
- c中结构体指针的强制类型转换
- C/C++中自动类型转换的规则
- C语言中类型转换时的数据丢失问题
- 开源中最好的Web开发的资源
- vim高效编辑——vim复制粘贴探密(转)
- grep详解
- 创建消息循环(Creating a Message Loop)
- android代码优化相关的小建议
- C++中显示的类型转换
- python开源项目目录结构参考和django最佳实践:项目布局
- IOS 中使用的手势 ,用到的类UIGestureRecognizer
- struts与jsp <s:iterator>使用方法
- (三)拆分和合并PDF
- vs2010 控制台 输出 乱码
- Android代码优化技术
- deadline_timer
- Android Context 详解