用于C编程的数字计数功能赢得';超过11位数不能工作
以下函数用于计算数字中的位数。不幸的是,它不适用于11位或更多数字,我不知道为什么。我觉得它与数据类型有关,但我认为在这种情况下,long int就可以了。谢谢你的帮助用于C编程的数字计数功能赢得';超过11位数不能工作,c,C,以下函数用于计算数字中的位数。不幸的是,它不适用于11位或更多数字,我不知道为什么。我觉得它与数据类型有关,但我认为在这种情况下,long int就可以了。谢谢你的帮助 long long int getLength(long long int input) { long long int length = 0; while(input != 0) { input /= 10; ++length; } return (length); } 这可能不是答案,
long long int getLength(long long int input)
{
long long int length = 0;
while(input != 0)
{
input /= 10;
++length;
}
return (length);
}
这可能不是答案,但请允许我在这里报告输出。你能再检查一下吗?这对我来说很有效
#include "stdio.h"
long long int getLength(long long int input)
{
long long int length = 0;
while(input != 0)
{
input /= 10;
++length;
}
return (length);
}
int main()
{
printf("%lld\n", getLength(12345678901)); // 11
printf("%lld\n", getLength(123456789012)); // 12
printf("%lld\n", getLength(1234567890123)); // 13
printf("%lld\n", getLength(0)); // 0
printf("%lld\n", getLength(-123)); // 3
}
平台Windows 10和gcc--version
返回
gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 7.3.0
问题1:您真的需要键入long-long-int
来报告位数吗
问题2:您是否在
printf
中正确使用了格式说明符%lld
?这可能不是答案,但请允许我在此处报告输出。你能再检查一下吗?这对我来说很有效
#include "stdio.h"
long long int getLength(long long int input)
{
long long int length = 0;
while(input != 0)
{
input /= 10;
++length;
}
return (length);
}
int main()
{
printf("%lld\n", getLength(12345678901)); // 11
printf("%lld\n", getLength(123456789012)); // 12
printf("%lld\n", getLength(1234567890123)); // 13
printf("%lld\n", getLength(0)); // 0
printf("%lld\n", getLength(-123)); // 3
}
平台Windows 10和gcc--version
返回
gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 7.3.0
问题1:您真的需要键入long-long-int
来报告位数吗
问题2:在
printf
中是否正确使用了格式说明符%lld
?长度是否确实需要long-long int?我的意思是数字的长度,而不是数字本身
这段代码在我的编译器中运行良好
#include <stdio.h>
int getLength(long long int input)
{
int length = 0;
while(input != 0)
{
input /= 10;
++length;
}
return (length);
}
int main() {
printf("Length of number : %d\n", getLength(12345678901234));
return 0;
}
你真的需要长整型的长度吗?我的意思是数字的长度,而不是数字本身 这段代码在我的编译器中运行良好
#include <stdio.h>
int getLength(long long int input)
{
int length = 0;
while(input != 0)
{
input /= 10;
++length;
}
return (length);
}
int main() {
printf("Length of number : %d\n", getLength(12345678901234));
return 0;
}
“它不起作用”不是一个很好的诊断。什么不起作用?你看到错误的结果,程序崩溃,程序挂起?欢迎来到Stackoverfow。大小可能取决于编译器以及计算机是32位还是64位。32位无符号整数的范围为0到4294967295。0到65535将是16位无符号。64位实现中的无符号long-long的范围为0到18446744073709551615。如果需要查找作为字符串提供的任何整数的长度,只需将其作为字符串读取即可。1)“t不适用于具有11位或更多位的数字”,因为代码正在调用
getLength()
。张贴一封电子邮件。2) getLength(0)
在更经常需要1时返回0。long
可以表示至少17个十进制数字,因此您的代码应该没有问题。很可能调用者正在转换32位类型,通常来说,32位类型并不总是能够表示超过9位的十进制数字。如果没有代码演示如何调用函数,没有人能提供帮助。“它不工作”不是一个很好的诊断。什么不起作用?你看到错误的结果,程序崩溃,程序挂起?欢迎来到Stackoverfow。大小可能取决于编译器以及计算机是32位还是64位。32位无符号整数的范围为0到4294967295。0到65535将是16位无符号。64位实现中的无符号long-long的范围为0到18446744073709551615。如果需要查找作为字符串提供的任何整数的长度,只需将其作为字符串读取即可。1)“t不适用于具有11位或更多位的数字”,因为代码正在调用getLength()
。张贴一封电子邮件。2) getLength(0)
在更经常需要1时返回0。long
可以表示至少17个十进制数字,因此您的代码应该没有问题。很可能调用者正在转换32位类型,通常来说,32位类型并不总是能够表示超过9位的十进制数字。如果没有代码演示如何调用函数,没有人能帮上忙。奇怪的是,“计算一个数字中的位数”。您认为getLength(0)
应该返回0还是1。最后,这是OP的电话,只是想知道您的视图。@chux它应该在我的视图中返回1,表示“计算数字中的位数”。您认为getLength(0)
应该返回0还是1。最后,这是OP的电话,只是想知道您的视图。@chux在我的视图中它应该返回1