对于“长”整数常数太大。类型 [英] integer constant is too large for "long" type

查看:190
本文介绍了对于“长”整数常数太大。类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

long long in C / C ++


编写一个简单的程序项目欧拉问题。拒绝编译,因为整数常数对于长类型太大,即使它应该在无符号长整型的大小限制内。使用dev-c ++编译器。



有问题的代码:

  #include< iostream> 

bool isprime(unsigned long long i)
{
if(i == 1 || i == 0)return false;
if(i == 2)return true;
for(unsigned long long k = 2; k!= i-1; k ++)
{
if(i%k == 0)return false;
}
return true;
}

int main()
{
for(unsigned long long i = 600851475143; i> = 0; i--)//有问题的行
{
if(isprime(i))
{
std :: cout<< i;
std :: cin.get();
return 0;
}
}
}


解决方案>

尝试使用ULL后缀: 600851475143ULL


Possible Duplicate:
long long in C/C++

Writing a simple program for a project Euler problem. Refuses to compile because "integer constant is too large for "long" type", even though it should be well within the size limits of an unsigned long long. Using the dev-c++ compiler.

code in question:

#include <iostream>

bool isprime (unsigned long long i)
{
    if(i==1||i==0) return false;
    if(i==2) return true;
    for(unsigned long long k=2;k!=i-1;k++)
    {      
        if(i%k==0) return false;
    }
    return true;
}

int main()
{
    for(unsigned long long i=600851475143;i>=0;i--) //problematic line
    {
        if(isprime(i))
        {
            std::cout<<i;
            std::cin.get();
            return 0;
        }
    }
}

解决方案

Try an "ULL" suffix: 600851475143ULL

这篇关于对于“长”整数常数太大。类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆