每当我在 char 数据类型中使用 scanf 函数时输出错误

问题描述 投票:0回答:1

每当我使用用户定义函数获取输入值,如 5,6 23,将此十进制数转换为二进制数时,我得到了错误的输出,但是当我在不使用用户定义函数的情况下运行代码时,我得到了正确的输出。我很困惑为什么这很开心帮助我

here my code 如果我接受输入 5,我得到类似 00110110

的输出
c char scanf
1个回答
0
投票

原因是

printf
转换说明符读取的是字符,而不是数字('5'而不是5)。 '5'是字符字面量,整型,值为53。 53 是将存储在
n
中的内容。 53 的二进制表示是 110101(你复制错误了吗?):32 + 16 + 4 + 1.

正如 Barmar 在评论中所说,如果你想读取一个数字,你应该使用像

%d
%u
这样的转换说明符。然后你也可以读取像 23 这样的输入,它由 two 字符 ;-).

© www.soinside.com 2019 - 2024. All rights reserved.