gpt4 book ai didi

c - 打印整数的位数

转载 作者:行者123 更新时间:2023-11-30 20:30:12 26 4
gpt4 key购买 nike

我必须提交此代码,目的是计算一个数字的位数并打印它(范围是从-231+1到231- 1) 并且结果必须以单个数字的形式呈现(例如,给定数字 234,它会打印 3)

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
long int num_ins;
int contador = 0;

printf("Inserir numero desejado a avaliar?\n"); // asking the number
scanf("%ld", &num_ins);

if (num_ins == 0) {
printf("%d", 1);
} else {
while (num_ins != 0) {
num_ins = num_ins / 10;
contador++;
}
printf("%d", contador); //contador is count
}
}

但是提交的内容一直给我一个错误,有一些数字不正确,我无法弄清楚。

最佳答案

首先,如果您使用的是 32 位数据类型,则范围将为 -2^31 到 2^31 -1

因此,最大正数将为 2^31 = 2147483647,最小正数将为 -2147483648

long int 有时是 64 位(在我的电脑上),因此它的范围会改变。最大值将为 9223372036854775807

根据您的代码,

  • 如果输入为 2147483647,则输出 = 10。 (正确)。

  • 如果输入为 9223372036854775807 (最大有效值),则输出 =
    19(正确)。

  • 如果输入为 92233720368547758078(超过最大有效值且位数为 20),则
    输出 = 19(不正确)。

关于c - 打印整数的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54776603/

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