【问题标题】:Bug when i input "0" before the number当我在数字前输入“0”时出现错误
【发布时间】:2017-09-22 15:10:43
【问题描述】:

当我想在数字前输入0 时遇到问题,但是当我只输入数字时一切正常。

#include <iostream>
#include <stdio.h>

int main()
{
    int input, output;

    printf("Enter number : ");
    scanf("%i",&input);

    output = input % 7;
    printf("%i", output);

    return 0;
}

例如:

  • 当我输入8 时,输出为1。但是当我输入08时,输出是0
  • 当我输入100 时,输出为2。但是当我输入0100时,输出是1

我知道在数字更快之前不要输入0,但我想知道是否可以在没有错误的数字之前输入0

我在 Windows 10 x64 上使用 Code::Blocks 16.01 (MinGW)。

【问题讨论】:

  • 如果输入前导 0,则选择数字的八进制表示,例如八进制的 0100 与十进制表示的 64 相同。 64 % 7 = 1。因此,这不是错误。
  • @camelCase 我明白了,但我想知道我是否可以在数字前输入“0”而不将其更改为八进制(保持为十进制/基数 10)
  • @sandyKhosasi 使用%d
  • scanf 是邪恶的。

标签: c++ codeblocks


【解决方案1】:

%i 与前缀0080100 等)结合使用会使scanf 将输入解释为以8 为底的八进制数,而不是以10 为底的八进制数。如果需要scanf 要忽略这一点,您应该改用 %d

【讨论】:

    猜你喜欢
    • 2018-05-03
    • 2021-12-30
    • 1970-01-01
    • 2021-04-26
    • 2022-01-15
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多