arrays - 为什么在 C 中显示数组时会发生此错误?
问题描述
我正在做的是输入一个类型为'unsigned long long'的数字,然后将其转换为二进制形式并以16位数字显示。
这是我的代码和结果。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
char D_PAN_ID[16];
char D_ADDRESS[16];
char S_PAN_ID[16];
char S_ADDRESS[16];
int main()
{
int bit1, bit2, bit3, bit4, k1, k2, k3, k4;
unsigned long long dec = 5;
/*
printf("8바이트 정수를 이진수로 변환\n");
scanf("%llu", &dec);
*/
printf("%llu 를(을) 이진수로 변환하면:\n", dec);
for (bit1 = 63; bit1 >= 48; bit1--)
{
k1 = dec >> bit1;
if (k1 & 1) {
D_PAN_ID[63 - bit1] = '1';
printf(&D_PAN_ID[63 - bit1]);
}
else {
D_PAN_ID[63 - bit1] = '0';
printf(&D_PAN_ID[63 - bit1]);
}
}
printf("\n\n");
for (bit2 = 47; bit2 >= 32; bit2--)
{
k2 = dec >> bit2;
if (k2 & 1) {
D_ADDRESS[47 - bit2] = '1';
printf(&D_ADDRESS[47 - bit2]);
}
else {
D_ADDRESS[47 - bit2] = '0';
printf(&D_ADDRESS[47 - bit2]);
}
}
printf("\n\n");
for (bit3 = 31; bit3 >= 16; bit3--)
{
k3 = dec >> bit3;
if (k3 & 1) {
S_PAN_ID[31 - bit3] = '1';
printf(&S_PAN_ID[31 - bit3]);
}
else {
S_PAN_ID[31 - bit3] = '0';
printf(&S_PAN_ID[31 - bit3]);
}
}
printf("\n\n");
for (bit4 = 15; bit4 >= 0; bit4--)
{
k4 = dec >> bit4;
if (k4 & 1) {
S_ADDRESS[15 - bit4] = '1';
printf(&S_ADDRESS[15 - bit4]);
}
else {
S_ADDRESS[15 - bit4] = '0';
printf(&S_ADDRESS[15 - bit4]);
}
}
return 0;
}
我得到的是这个。我认为自从打印第二个结果以来,它在后面添加了较高的结果。像这样:
result1
result2 + result1
result3 + result1 + result2
result4 + result1 + result2 + result3
我如何修复它以显示
000000000000
000000000000
000000000000
000000000101
解决方案
推荐阅读
- beagleboneblack - BeagleBone Black:无法获得 u-boot 提示
- python - 会话未存储在 Django 的浏览器中
- mysql - 加入蛋糕。使用 cakephp 中的连接和排序获取带有教程计数的用户数据
- reactjs - 创建React App忽略图片元素源/ srcSet?
- xslt - 更改 XSL 中的十进制格式
- python - python中RTCM msg的二进制解析
- time - Rust 中每个 M 月的第 N 天
- typescript - 声明类型具有一个必需的属性,其余的应该是动态的和可选的
- excel - 列出所有打开的 Excel 文件,以便用户可以选择一个文件
- php - 写 if, else on date