Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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程序如何显示最大可能无符号long的值?_C_Integer Overflow - Fatal编程技术网

C程序如何显示最大可能无符号long的值?

C程序如何显示最大可能无符号long的值?,c,integer-overflow,C,Integer Overflow,下面的程序不应该将2^64-1的值打印为整数吗 #include <stdio.h> #include <math.h> int main(void) { printf ("%llu\n" , ( unsigned long long int ) ( pow (2 , 8 * sizeof (unsigned long long) ) - 1 ) ) ; return 0; } #包括 #包括 内部主(空) { printf(

下面的程序不应该将2^64-1的值打印为整数吗

#include <stdio.h>
#include <math.h>

int main(void) 
{
    printf ("%llu\n" , ( unsigned long long int ) ( pow (2 ,  8 * sizeof (unsigned long long) ) - 1 ) ) ;

    return 0;
}
#包括
#包括
内部主(空)
{
printf(“%llu\n”,(无符号长整型)(pow(2,8*sizeof(无符号长整型))-1));
返回0;
}

函数
pow
返回一个
double
,通常是一个带有53位尾数的64位浮点类型。这还不足以解析粒度为1的264附近的数字

小于264的下一个可表示的
double
值是264− 2048 = 264 − 211264− 1仍然是264,这是最接近的可表示值。将其转换为
无符号long
,得到0

如果需要最大可能的无符号长的值,可以使用
中的
ULLONG\u MAX


函数
pow
返回一个
double
,通常是带有53位尾数的64位浮点类型。这还不足以解析粒度为1的264附近的数字

小于264的下一个可表示的
double
值是264− 2048 = 264 − 211264− 1仍然是264,这是最接近的可表示值。将其转换为
无符号long
,得到0

如果需要最大可能的无符号长的值,可以使用
中的
ULLONG\u MAX


#包括…printf(“ULLONG_MAX=%llu\n”,ULLONG_MAX)
@kaylum xd而不是
8
您可以使用
CHAR\u BIT
(以便于携带的方式产生错误结果:-)
#包括…printf(“ULLONG\u MAX=%llu\n”,ULLONG\u MAX)
@kaylum,而不是
8
您可以使用
CHAR\u-BIT
(以一种可移植的方式产生错误的结果:-)有趣的是,在x86\u 64 gcc上它可以工作(但在clang上不工作):。有趣的是,在x86\u 64 gcc上它可以工作(但在clang上不工作):。
printf ("%llu\n", ULLONG_MAX);    // need <limits.h>
printf ("%llu\n", ~0ull);