Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中负数的环礁值_C_Atoi - Fatal编程技术网

C中负数的环礁值

C中负数的环礁值,c,atoi,C,Atoi,我正在尝试使用环礁来转换带有空格的一串数字。我想在C中做一个循环,它只接受正数 到目前为止,据我所知,字符上的环礁将返回0,同样是int和char的组合,如3a。但是,环礁岛的负数是否有一个取值范围 根据我的第一个打印语句,我发现-1的结果是18446744073709551615,-2是18446744073709551614,-3是18446744073709551613,以此类推 for(arg = 1; arg < argc; ++arg) { printf("%llu\n"

我正在尝试使用环礁来转换带有空格的一串数字。我想在C中做一个循环,它只接受正数

到目前为止,据我所知,字符上的环礁将返回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");
   }
}

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

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

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

/*本例输出了不应编译的-1*/

的正确输出。atollx>=y不是有效的调用。你是说atollx>=y吗?你的有效输入数字保证在某个范围内吗?@tadman是的,对不起。在这种情况下,y是负数环礁的下界。我发现。。。这些结果是不正确的,但一些不正确的打印或比较数字的方法可能会让人觉得它们是正确的。请粘贴一张图片,显示您认为发生这种情况的原因。如果您使用的是无符号值,您甚至不能谈论负数,因为负数不存在。如果您谈论的是有符号值,则可以处理负值,但%llu是显式无符号的。在这种情况下使用%lld。实际上,这是因为我使用的是%llu,所以我希望从%lld打印输出。