程序员面试宝典(第四版) —— 类型转换

类型转换通用指导原则:

1、为防止精度损失,如果必要的话,类型总是被提升为较宽的类型。

2、所有含有小于整型的有序类型的算术表达式在计算之前其类型都会被转换成整型。


1、下面程序的结果是多少?

#include
#include
#include
#include

using namespace std;
int main()
{
	float a=1.0f;
	cout << (int)a << endl;
	cout << &a << endl;
	cout << (int&)a << endl;
	cout << boolalpha << ((int)a == (int&)a) <
解析:记住浮点数在内存里和整数的存储方式是不同的,(int&)a 相当于将该浮点数地址开始的 sizeof(int)个字节当成int型的数据输出,因此这取决于 float 型数据在内存中的存储方式,而不是经过(int&)a显示转换的结果。

程序员面试宝典(第四版) —— 类型转换_第1张图片


2、下面程序的结果是什么?

#include

int main()
{
	unsigned int a = 0xFFFFFFF7;
	unsigned char i = (unsigned char)a;  //高于3位和 3位的将被程序自动丢弃
	char* b = (char*)&a;//使 b 也指向 a 

	printf("%08x, %08x", i, *b);

	return 0;
}

程序员面试宝典(第四版) —— 类型转换_第2张图片


你可能感兴趣的:(求职面试【C/C++】)