问题1
X&(X-1)是什么意思?
问题2
对于算法,一个是要求高效 同时 要便于识别错误
问题3
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<conio.h>
using namespace std;
int main()
{
float a = 1.0f;
cout << "float a = 1.0f" << endl;
cout <<"int(a) = "<< int(a) << endl;
cout <<"&a = "<< &a << endl;
cout <<"(int&)a = "<< (int&)a << endl;
cout <<"boolalpha ((int)a == (int &)a) = "<< boolalpha << ((int)a == (int &)a) << endl;//输出什么?
cout << "\n" << endl;
float b = 0.0f;
cout << "float b = 0.0f" << endl;
cout << "int(b) = " << int(b) << endl;
cout << "&b = " << &b << endl;
cout << "(int&)b = " << (int&)b << endl;
cout << "boolalpha ((int)b == (int &)b) = " << boolalpha << ((int)b == (int &)b) << endl;//输出什么?
cin.get();
return 0;
}
问题4
解析:unsigned int变量赋值给unsigned char变量时会发生字节截断(3位和高于3位的将 被程序自动丢弃)。
000000f7
第二个数,也就是char* b=(char*)&a中a本身为一个uint类型的值,把它的地址赋给一个执行char类型数据的指针。char类型的长度只有一个字节,打印char类型的指针指向的值。
影响的是指针的寻址。
fffffff7
注:
&a的结果是一个指针,它的类型取决于a的类型,此处&a的类型应该是:
上面等价于:
上面的步骤就是将一个unsigned int型的指针强制转换成一个char型的指针。所以请注意:这里是char类型的指针转换,而不是char类型的转换。
这样转换后,假设a的地址是x:
从一个函数返回一个表达式的类型与返回类型不相同
在这种情况下返回的表达式类型自动转换成函数类型。例如: