uint64_tを左シフトすると期待値が出力されず、理由を知りたいと思っています。私が得たのは、4つの最上位バイトがゼロになっていると予想される結果です。 私はDebian Jessie 64bit上でx86_64 CPU(Intel i7 3770k)を使用しています。これは、同じ動作を再現するテストプログラムです。uint64_tを左シフトすると、最も重要なdwordがゼロになります
#include <stdio.h>
#include <stdint.h>
int main(int argc, char * * argv)
{
uint64_t var = 0xDEFEC8ED;
printf("%016x\n", var << 24);
return 0;
}
OUTPUT 00defec8ed000000 // expected 00000000ed000000 // obtained
警告が有効になっているコンパイラの多くは、問題を報告します。時間を節約し、すべてのコンパイラの警告を有効にします。 – chux