首页 > 解决方案 > C中负数的环礁值

问题描述

我正在尝试使用环礁来转换带有空格的数字字符串。我想在 C 中创建一个只取正数的循环。

到目前为止,据我了解,char 上的环礁将返回 0,同样使用 int 和 char 的组合,例如“3a”。但是,负数上的环礁是否有一个负数值范围?

根据我的第一个打印语句,我发现 -1 的结果是 18446744073709551615,-2 是 18446744073709551614,-3 是 18446744073709551613 等。

for(arg = 1; arg < argc; ++arg)
{
   printf("%llu\n", atoll(argv[arg]));

   if(atoll(argv[arg]) == 0 || atoll(argv[arg]) >= xxxxx))
   {
     printf("Enter a valid number.");
   }
   else
   {
     printf("irrelevant code here");
   }
}

标签: catoi

解决方案


从您的代码片段中,不可能找出几件重要的事情。您是否包含正确的标题,是否在 printf 中使用了正确的格式说明符和长度修饰符?在下面的示例中,您可以找到正确的包含 long long 的正确格式。

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

int main()
{
    printf("%lld\n", atoll("-1"));
    return 0;
}

/* 这个例子打印出正确的 -1 输出 */


推荐阅读