gpt4 book ai didi

c - 如何在数组内打印二进制数?

转载 作者:行者123 更新时间:2023-12-02 01:38:44 28 4
gpt4 key购买 nike

我正在尝试用 C 语言打印二进制数。我遇到了以 0 开头的二进制数的问题。当您尝试将其保留在数组中并尝试打印它时,会出现随机数,当您使用 scanf 输入时,数字的前导零消失。

遇到这种情况我该怎么办?预先感谢您的帮助。

int main(){
int binarys[3] ={01001001, 01100110, 00100000};
size_t i;
for(i=0; i<3; i++)
{
printf("%d\n", binarys[i]);
}

int binary;
printf("Enter a binary: ");
scanf("%d", &binary);
printf("%d", binary);
}

输出:

262657
294984
32768
Enter a binary: 01001001
1001001

最佳答案

I'm having a problem with binary numbers starting with 0

Integer constants0 开头的不是二进制而是八进制。

如果您有一个提供 0b 前缀作为扩展的编译器(或者来自 future 的标准化版本),并且想要声明一个值为 32 的整数,以 2 为基数无论出于何种原因,请写入 0b00100000。不过,它的内容仍然与您刚刚编写的 32 完全相同,因为 base 是数字表示的方式,并且不不影响其值(value)。

when you get input with scanf,

scanf函数没有二进制转换说明符,%d 明确表示十进制,即基数 10。

如果你想扫描以二进制编写的数字,你需要读取一个字符串,确认它只有 1 和 0,然后自己转换它(即使用 strtolstrol(str, &end, 2))。

... the leading zero of the number disappears

默认情况下不打印前导零。

再次,printf无论如何,没有二进制转换说明符,但如果要打印前导零,则需要设置字段宽度并请求零填充,例如 %08d

如果你想以二进制打印数字,你还需要先自己将它们转换为字符串。

关于c - 如何在数组内打印二进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71936327/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com