A warning - comparison between signed and unsigned integer expressions [-Wsign-compare]的解决方法

2023-05-16

源程序是

/*********************产生观测模型****************************/
void ProRobotics::GenObservations(float sd)
{//Generate observations.假设传感器能观察到机器人周围sd米内的所有特征
    Point2f     delta;                                  //保存机器人位姿和landmarks的位置差值
    float       dst;
    float       theta;                                  //保存特征角,w.r.t robot frame
    observations.clear();
    for(int i = 0; i < landmarks.size(); i++)
    {
        delta = landmarks.at(i) - Point2f(realPathpoints.back().x,realPathpoints.back().y);
        dst   = norm(delta);
        if(dst < sd)
        {
            theta = atan2(delta.y,delta.y) - realPathpoints.back().z;
            dst  += GenGaussianValue(sigma_r*sigma_r);
            theta+= GenGaussianValue(sigma_phi*sigma_phi);
            AngleWrap(theta);
            observations.push_back(Point3f(dst,theta,i));
        }
    }
}

         编译时提示  for(int i = 0; i < landmarks.size(); i++)警告:/home/congleetea/导航/ProRobotics/prorobotics.cpp:303: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]。这个警告目的是防止一个负的符号型的数据转化为无符号型时,会产生一个不是我们想要的很大的数据,并且,大家都知道signed 和unsigned数据的范围也不同。

          这里  for(int  i = 0; i < landmarks.size(); i++)中,i是signed integer,landmarks.size()是unsigned。所以提示了comparison between signed and unsigned integer。解决的办法是:

1)将这一句改为    for(vector<Point2f>::size_type i = 0; i < landmarks.size(); i++)这种方法更精确,Point2f是landmarks的数据类型

size_type是由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型。

2)将这一句改为   for(std::size_t  i = 0; i < landmarks.size(); i++).

size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

A warning - comparison between signed and unsigned integer expressions [-Wsign-compare]的解决方法 的相关文章

  • 为什么直接比较两个枚举时会出现错误?

    我有一些代码正在移植到新平台 它开始给我一个关于比较两个不同枚举器列表中的两个枚举器的错误 我很困惑为什么它会给我一个关于此的错误 C 规范 6 7 2 2 的枚举规范部分指出 The identifiers in an enumerato
  • MS Access 在两个日期之间选择?

    我已经搜索过 但所有结果都无法帮助我理解 我需要选择 18 23 岁人员的姓名 所以我的尝试是 WHERE People Birth Between Now Year 18 And Now Year 23 我做错了什么 some date
  • java中同一数组的元素比较

    我正在尝试比较同一数组的元素 这意味着我想将 0 元素与其他所有元素进行比较 将 1 元素与其他所有元素进行比较 依此类推 问题是它没有按预期工作 我所做的是我有两个从 0 到 array length 1 的 for 循环 然后我有一个
  • 用于执行“Between”的 Linq 表达式

    在 SQL 中 您可以编写一个查询 在 nvachar 类型的列上执行 Between 并简单地返回指定的最小值和最大值之间的所有行 例如 Table Id Int Name nvarchar Contents 1 Annie 2 Bill
  • 如何最好地重载运算符 < > <= >= 但只编写一两个比较函数? [复制]

    这个问题在这里已经有答案了 我有一个具有 std string 类型属性的类 我想通过比较属性为类提供一些比较运算符函数 例如 我的问题是 任何简单的方法或工具 1 只需编写一两个函数 例如运算符 2 甚至更简单 因为类比较取决于其类型属性
  • 使用 ruby​​ 将存储为有符号的无符号整数转换回原始值

    C 程序将它认为是 64 位无符号整数放入 Postgres 数据库中类型为 int8 的列中 对于 Postgres int8 始终是 signed int8 没有 unsigned int8 这样的东西 因此 我的 Ruby 程序将从
  • 如何使用 Salt 创建 SHA256 哈希?

    我目前正在开发一个 Visual Studio C Windows 窗体项目 但是 我对 SHA256 salted 的工作原理感到困惑 我在网上找到了一些例子 但无法理解如何调用这个函数 我想在连接到数据库 Microsoft Acces
  • JSF 和 Spring 性能与较差的 JSP 性能

    我看到我的同事开发了一些 JSF 项目 这些项目在我看来速度非常慢 有人有同样的看法吗 我目前正在使用 jsp jstl 和 jQuery 作为 富 客户端 我想知道现代框架 jsf wicket tapestry 相对于旧的普通 jsp
  • 如何使用自定义比较器比较两个数组列表是否相等?

    具体来说 我有两个清单 List
  • Haskell、Lisp 和冗长[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Typescript:如何期望精确的类实例作为函数参数

    Code 考虑以下代码 一个基类 两个子类 以及一个采用一个子类的一个实例的函数 abstract class AbstractNumberHolder constructor private readonly value number g
  • 如何比较两个整数? [复制]

    这个问题在这里已经有答案了 我必须比较两个Integer对象 不是int 比较它们的规范方法是什么 Integer x Integer y 我可以想到这个 if x y The 运算符仅比较引用 因此这仅适用于较小的整数值 但也许自动装箱开
  • MySQL 复合索引和运算符 BETWEEN

    我对这个查询有一个疑问 SELECT FROM runs WHERE NOW BETWEEN began at AND finished at 您认为为 begin at 和 finish at 列创建复合索引有意义吗 或者只为 begin
  • 日期范围内的日期范围

    实际上这个任务对我来说似乎很容易 但我有点卡住了 非常感谢一些提示 D 我有一些带有开始和结束时间的事件 我想创建一个包含日历周的表格 因此 我编写了一个方法来检查本周内是否有事件 并将其着色如下 private boolean inWee
  • 如何断言两个具有 Javabean 值的 HashMap 相等?

    我有两个HashMap
  • 在 DOS/Batch 中,08 小于 1,但 07 大于 1。为什么?

    在 DOS 批处理中 if 08 lss 1 echo true 与 真 相呼应 09也是如此 08和09都小于1 However if 07 lss 1 echo true 不回显任何内容 01至07不小于1 为什么 08年和09年有什么
  • 在 C++ 中检查向量的所有元素是否相等

    如果我有一个值向量并且想要检查它们是否都相同 那么在 C 中有效执行此操作的最佳方法是什么 如果我用其他语言 例如 R 进行编程 我的想法是仅返回容器的唯一元素 然后如果唯一元素的长度大于 1 我知道所有元素不可能相同 在 C 中 可以这样
  • 什么时候右移操作>>移位符号位什么时候不呢?

    我的问题是为什么a gt gt 1移位符号位 但不移位 a 0xaaaaaaaa gt gt 1 代码片段 int a 0xaaaaaaaa std cout lt lt sizeof a lt lt std endl getBits a
  • 为什么在比较时将常量放在变量之前?

    我注意到我们的一些代码中存在以下语法有一段时间了 if NULL var or if 0 var 和类似的事情 有人可以解释一下为什么写这个的人选择这个符号而不是常见的符号var 0 way 这是风格问题 还是以某种方式影响性能 这是一种避
  • Java 中子字符串与字符串的比较

    所以基本上 用户输入 2 个字符串 CATSATONTHEMAT AT 我们需要计算第二个字符串在第一个字符串中出现的次数 所以这里的答案是 3 这就是我到目前为止所拥有的 而且它一直在说 线程 主 中的异常 java lang Strin

随机推荐

  • 用HttpPost登陆验证时,用户名和密码放在请求头部header中的处理方法,形式为Authorization: username password。

    xfeff xfeff post setHeader 34 Authorization 34 34 your token 34 这里主要是要搞清楚your token是什么 xff0c 把认证信息传递正确 xff0c 这个认证信息是通过用户
  • vs code 运行C语言并调试

    vs code 运行C语言 2022 03 19 mingw64下载地址更新 xff08 window xff09 task json文件修改launch json文件修改 更新版 xff08 window xff09 1 下载MinGW编
  • 【Http认证方式】——Basic认证

    今天在访问请求 xff1a http 192 168 2 113 8080 geoserver rest workspaces时 xff0c 浏览器弹出窗口需要输入用户名和密码 xff0c 并且 xff0c 如果不输入或者输入错误 xff0
  • 大小端介绍与分析

    1 字节序 字节序即字节的存储顺序 xff0c 如果数据都是单字节的 xff0c 那怎么存储无所谓了 xff0c 但是对于多字节数据 xff0c 比如int xff0c double等 xff0c 就要考虑存储的顺序了 字节序是硬件层面的东
  • Emgu-WPF 激光雷达研究-定位实现

    特定位置或障碍物位置定位实现 读取激光雷达数据并存储于本地作为测试数据 每一帧数据对同一障碍物的定位信息均存在偏差 所以先对需要定位的点进行数据取样 取样过程中 xff0c 遇到数据丢失 xff0c 或检测到多个障碍物 不满足障碍物生存指数
  • Jetson NX性能介绍

    NX的各个工作模式及功耗 xff1a 与其他jetson系列板卡的对比
  • 移远EC200UCN_LA 4G通信模块 OpenCPU二次开发过程中遇到的各种坑

    这里主要记录一下我在使用移远开发板进行 EC200UCN LA 4G通信模块开发中遇到的各种坑 注 xff1a Q为遇到的问题 A为问题的解决办法 T为注意事项 Q 串口demo无法正常接收和发送消息 A demo里用的UART2 xff0
  • GPS数据格式解析

    GPS数据格式解析 简介 GPS发送数据以行为单位 xff0c 数据格式如下 xff1a 信息类型 xff0c x xff0c x xff0c x xff0c x xff0c x xff0c x xff0c x xff0c x xff0c
  • 线程的sleep()方法的简单使用

    线程的sleep方法签名位 xff1a public static void sleep long millis throws InterruptException 是静态方法 xff0c 使目前正在执行的线程休眠millis毫秒 pack
  • 栈和堆的生长方向

    C 43 43 作为一款C语言的升级版本 xff0c 具有非常强大的功能 它不但能够支持各种程序设计风格 xff0c 而且还具有C语言的所有功能 我们在这里为大家介绍的是其中一个比较重要的内容 xff0c C 43 43 内存区域的基本介绍
  • mysql关于bit类型用法

    本文来源于 xff1a http www server110 com mysql 201403 7117 html Mysql关于bit类型的用法 xff1a 官方的资料如下 xff1a 9 1 5 位字段值 可以使用b 39 value
  • Ajax 简单购物车工程

    工程结构图 xff1a index jsp lt 64 page language 61 34 java 34 contentType 61 34 text html charset 61 utf 8 34 pageEncoding 61
  • Oracle scott账户被锁定,scott默认密码,sys,system默认密码

    oracle帐号scott被锁定如何解锁 具体操作步骤如下 xff1a C gt sqlplus 请输入用户名 xff1a sys 输入口令 xff1a sys as sysdba 注意 xff1a 在口令这里输入 的密码后面必须要跟上 a
  • Linux将输出放到文件中

    一 xff0c 如何把命令运行的结果保存到文件当中 这个问题太简单了 xff0c 大家都知道 xff0c 用 gt 把输出转向就可以了 例子 lhd 64 hongdi ls gt ls txt lhd 64 hongdi cat ls t
  • 理解interrupt()方法

    java interrupt 方法只是设置线程的中断标记 xff0c 当对处于阻塞状态的线程调用interrupt方法时 xff08 处于阻塞状态的线程是调用sleep wait join 的线程 xff0c 会抛出InterruptExc
  • 泛型二 泛型和数组

    数组和泛型容器有什么区别 要区分数组和泛型容器的功能 xff0c 这里先要理解三个概念 xff1a 协变性 xff08 covariance xff09 逆变性 xff08 contravariance xff09 和无关性 xff08 i
  • 浏览器缓存

    阅读目录 1 浏览器缓存基本认识 2 强缓存的原理 3 强缓存的管理 4 强缓存的应用 5 协商缓存的原理 6 协商缓存的管理 7 浏览器行为对缓存的影响 浏览器缓存 xff0c 也就是客户端缓存 xff0c 既是网页性能优化里面静态资源相
  • ubuntu有线无线一起连

    在做嵌入式开发 xff0c 有线连开发板 xff0c 无线上网 一直都是连了有线无线就掉线 设置如下 xff1a 对于开发板的有线网络 xff0c 在设置里选上Use this connection only for resources o
  • jstat用法

    jstat的用法 用以判断JVM是否存在内存问题呢 xff1f 如何判断JVM垃圾回收是否正常 xff1f 一般的top指令基本上满足不了这样的需求 xff0c 因为它主要监控的是总体的系统资源 xff0c 很难定位到java 应用程序 J
  • A warning - comparison between signed and unsigned integer expressions [-Wsign-compare]的解决方法

    源程序是 span style font size 14px 产生观测模型 void ProRobotics GenObservations float sd Generate observations 假设传感器能观察到机器人周围sd米内