1、リストの逆転
私の以前のインタビューの質問が関連している、書いていません
図2に示すように、第二の最大数を見つけるために、アレイ機能を達成するために(キーポイント- 最初の二つは、最大数から保存されてきます)
//找出第二大的数
int search_sec(int *arr, int len)
{
int ret[2] = { 0,0 };
for (int i = 0; i < len; ++i)
{
if (arr[i] > ret[0])
{
ret[1] = ret[0];
ret[0] = arr[i];
}
else if (arr[i] > ret[1])
{
ret[1] = arr[i];
}
}
return ret[1];
}
図3に示すように、機能を達成するために、最初の16ビット整数が整数あたり4ビットに応じて加算される(テストサイト、シフト操作)
//位运算
int test(int a)
{
int temp;
int count = 0;
for (int i = 0; i < 4; ++i)
{
temp = a >> i * 4;
count += temp & 0x000F;
}
return count;
}
4、出力要求
union
{
int a;
char b[2];
}aa;
aa.a = 0;
aa.b[0] = 10;
aa.b[1] = 1;
printf("%d",aa.a);
出力は266です
分析:米国AAは、メモリ10の4つのバイトを順次占める1,0,0
これは、int型0,0,1,10と解釈されます
1は256であり、出力は、256 + 10であります