私がchar *に整数値をコピーしようとしていますが、私はいつも127奇妙な結果C
int main(int argc, char **argv) {
printf("Running test\n");
char x[2];
int y = 127, z = 128;
printf("\ny: "); fflush(stdout);
for (int i = 0; i < 32; i++) {
printf("%d", (y >> i) & 0x1);
fflush(stdout);
}
printf("\nz: "); fflush(stdout);
for (int i = 0; i < 32; i++) {
printf("%d", (z >> i) & 0x1);
fflush(stdout);
}
*x = y;
printf("\nxy: "); fflush(stdout);
for (int i = 0; i < 32; i++) {
printf("%d", (*x >> i) & 0x1);
fflush(stdout);
}
printf("\nxz: "); fflush(stdout);
*x = z;
for (int i = 0; i < 32; i++) {
printf("%d", (*x >> i) & 0x1);
fflush(stdout);
}
return 0;
}
結果、上記の整数で奇妙な結果を得るにはchar *に整数をコピーするとき:
走行試験
Y:11111110000000000000000000000000
Z:00000001000000000000000000000000
XY:111 11110000000000000000000000000
XZ:00000001111111111111111111111111
コンパイルするためには、私は(それが重要な場合だけ出力フラグ付き)のgcc V 5.4.0を使用します。 "GCC test.cの-o test" を
は、すべてのヘルプがされます
'fflush(stdout)' 'あなたの行が終了したら' printf'だけ '\ n'を使ってください。そうでない場合は終了するまで待ってください....まれに、フラッシュすることができます。しかし、あなたがそれを使用する方法は、コードを乱雑にするだけです。 –
@カミカゼ - 特定の場所で改行したくない場合はどうすればいいですか? – StoryTeller
私はビット値をすべて素敵できれいに印刷するためにfflushする必要があります。結果は読み込み可能です – Miistogun