c++ - 警告 : comparison between signed and unsigned integer expressions. 。如何解决?

标签 c++ integer size unsigned signed

我在我的代码中比较有符号和无符号整数表达式:

    vector<long int> row;
    long n,m;
    long int pro=1;
    cin>>n;
    for(long i=0;i<n;i++)
    {
        long int temp;
        for(long j=0;j<n;j++)
        {
            cin >> temp;
            row.push_back(temp);
        }
    }

    cin >> m;
    for(long i=0;i<row.size();i++)
        pro = pro * pow(row[i],m);

    long int mod = 1000000007;
    cout<< (long int)pro%mod;

在行:for(long i=0;i<row.size();i++)

如何修复此警告?

最佳答案

std::vector::size 返回值 size_type ,即 Unsigned integral type (usually std::size_t ) .

您的循环计数变量的类型为 long这是一个 signed 类型。因此,在循环条件中,您正在比较有符号和无符号类型。

解决方法很简单:使用std::vector<long int>::size_type (或者甚至可能是 size_t )而不是 long .

关于c++ - 警告 : comparison between signed and unsigned integer expressions. 。如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31889596/

相关文章:

C++读取数组cin错误

c++ - FFMPEG:编码后直接解码数据包

c++ - C++ 中的 Lambda 通用性

C:无法对包含用户输入的元素的整数数组进行排序

c++ - 隐式转换整数计算以在 C++ 中 float

.net - 计算对象的大小,使其包括其所有子对象的大小和(孙子链)

c++ - 函数检查字符类型的值

将使用 wscanf 读取的宽字符字符串转换为 C 中的整数

java - 元件尺寸问题!由于我不知道的原因调整为 parent 的尺寸!

c - 为什么可执行文件(.exe 文件)的大小大于编译后的 .C 文件?