十五、C++ 类型转换

1. 隐式类型转换

#include <stdio.h>

int main(int argc, char **argv)
{
	double d = 100.1;
	int i = d;  // doublezh 2 int
	char *str = "100ask.taobao.com";
	int *p = str; // char * 2 int * 

	printf("i = %d, str = 0x%x, p = 0x%x\n", i, str, p);

	return 0;
}

2. 显式类型转换

#include <stdio.h>

int main(int argc, char **argv)
{
	double d = 100.1;
	int i = d;  // double 2 int
	char *str = "100ask.taobao.com";
	int *p = (int *)str; // char * 2 int * 

	printf("i = %d, str = 0x%x, p = 0x%x\n", i, (unsigned int)str, (unsigned int)p);

	return 0;
}

3. reinterpret_cast < type-id >(expression)  相当于 C风格的用(type-id)实现的强制类型转换,

注意:其不能把原有的 const 只读属性转换成可读可写属性

(expression) 表明为函数,expression是参数

reinterpret_cast < type-id > 表明为模版函数

#include <stdio.h>

int main(int argc, char **argv)
{
	double d = 100.1;
	int i = d;  // double 2 int
	char *str = "100ask.taobao.com";
	int *p = reinterpret_cast<int *>(str); // char * 2 int * 

	printf("i = %d, str = 0x%x, p = 0x%x\n", i, reinterpret_cast<unsigned int>(str), reinterpret_cast<unsigned int>(p));

	return 0;
}

4. const_cast 能把原有的 const 只读属性转换成可读可写属性

#include <stdio.h>

int main(int argc, char **argv)
{
	double d = 100.1;
	int i = d;  // doubleתΪint
	const char *str = "100ask.taobao.com";
	char *str2 = const_cast<char *>(str);
	int *p = reinterpret_cast<int *>(str2); // char *תΪint * 

	printf("i = %d, str = 0x%x, p = 0x%x\n", i, reinterpret_cast<unsigned int>(str), reinterpret_cast<unsigned int>(p));

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值