C 中的“由于数据类型范围有限,比较始终为真”警告?

2023-11-26

我有以下代码

//Point.h
#define WIDTH 8
#define HEIGHT 8

typedef struct Point
{
  char x;
  char y;
} Point;

//Board.c
#include <stdbool.h>

// Some other functions that we don't care about... 

bool inBounds(Point * p)
{
  return p->x >= 0
    && p->x <= WIDTH
    && p->y >= 0
    && p->y <= HEIGHT;
}

当我编译这个(ppu-gcc 4.1.1)时,我收到以下警告

warning: comparison is always true due to limited range of data type

即使 char 的范围是 -127 到 127 并且 WIDTH 是 8,这完全在 char 的范围内。我已经尝试将 WIDTH 显式转换为 char,但仍然出现错误。


你确定吗char已签署?尝试将字段明确声明为signed char看看你会得到什么。

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

C 中的“由于数据类型范围有限,比较始终为真”警告? 的相关文章

随机推荐

  • 如何使用 Cucumber 测试确认对话框?

    我正在将 Ruby on Rails 与 Cucumber 和 Capybara 一起使用 我将如何测试一个简单的确认命令 你确定吗 另外 我在哪里可以找到有关此问题的更多文档 硒驱动程序现在支持这个 从 Capybara 中 您可以像这样
  • 为什么 std::array::size constexpr 具有简单类型(int、double、...)而不是 std::vector (GCC)?

    以下代码 std array
  • js while(true){} 阻止事件循环

    setInterval function console log hello 2000 while true hello 永远不会被打印 我认为事件循环在不同的线程中运行 但这里似乎 while 循环 阻止了 事件循环 的执行 有人可以解释
  • 从 FF 中的选择框中删除轮廓

    是否可以删除选择元素中所选项目周围的虚线 我尝试添加outlineCSS 中的属性但它不起作用 至少在 FF 中不起作用 Update在继续删除大纲之前 请阅读本文 http www outlinenone com Well 双像素的答案简
  • 将模板传递给“rails new”

    当调用 rails new 时 显然可以通过 m 命令行参数传递某种模板或设置脚本 我发现这个通过https github com fortuity rails3 mongoid devise wiki Tutorial 演练 And ht
  • 由空格分隔的两个字符串自动连接

    我刚刚发现了一些非常有趣的东西 这是由我的打字错误引入的 这是一个非常简单的代码脚本示例 printf A B 结果将是 gt AB 有人可以解释这是如何发生的吗 作为 C 标准的一部分 相邻的字符串文字被连接起来 对于C 引用C99 但C
  • 谷歌分析 API V3 / OAuth 2

    我拼命地试图自己解决这个问题 并且不想带着这个问题来解决这个问题 但我已经束手无策了 不感谢 api oauth 文档 我正在 PHP 中工作 我试图避免使用Google Client and AnalyticsService类 通过使用
  • Android 中的并发文件访问

    我知道许多操作系统对文件系统执行某种锁定以防止视图不一致 Java 和 或 Android 对文件访问的线程安全性有任何保证吗 在我自己编写并发代码之前 我想尽可能多地了解这一点 如果我错过了已回答的类似问题 请随时关闭此线程 谢谢 And
  • 服务发现如何与现代 docker/docker-compose 一起工作?

    我正在使用 Docker 1 11 1 和 docker compose 1 8 0 rc2 在过去的美好时光 所以 去年 你可以建立一个docker compose yml像这样的文件 app image myapp frontend i
  • 使用 pika 发布消息时如何添加标头键:值对

    我正在编写一个自动化测试来测试消费者 到目前为止 我在发布消息时不需要包含标头 但现在我需要了 而且似乎缺乏文档 这是我的出版商 class RMQProducer object def init self host exchange ro
  • NSView 的自动调整大小行为

    我需要了解 NSView 如何自动调整其视图的大小 我已经在 IB 中设置了所有内容 并且我的子视图可以很好地调整大小 当我用鼠标调整窗口大小时 但是 如果我这样做 myMainView setFrame 使用我的新框架矩形 什么也没有发生
  • 如何将html5输入类型日期和时间转换为javascript日期时间

    我正在使用 html5 输入类型 日期和时间 如何将表单输入类型转换为javascript对象日期 其中包含时间 这是我的代码的一部分
  • 在 .NET 中使用 XML 注释有哪些优点?

    我无法理解使用 XML 注释的优点 我知道它们可以转换为代码外部的漂亮文档 但使用更简洁的 DOxygen 语法也可以实现同样的效果 我认为 XML 注释是错误的 因为 他们总体上混淆了注释和代码 它们更难被人类阅读 在单个屏幕上可以查看的
  • ggplot2:y 轴标签在绘图区域内左对齐

    我正在寻找一种自动移动 y 轴刻度标签的方法 以便它们显示左对齐within实际地块面积 我喜欢 ggplot 中主题组件的总体灵活性 但在尝试找到通用方法来实现此目的时遇到了困难 我知道给予axis text y的组合hjust 0负右边
  • cmake 是否可以选择避免使用未定义的变量(如 bash set-u)

    Does cmake有一种在使用未定义变量时生成错误的机制 有点像set u选项中bash 我有一个由多个项目组成的大项目CMakeLists txt文件 大约 1500 行 所以使用这种结构是相当困难的 if NOT DEFINED VA
  • 在 Angular 2 中重置模板驱动的表单(模型和验证)

    我们如何重置控件的验证状态模板驱动角度 2 的形式 我知道可以通过设置控件所绑定的模型值来重置控件 但是验证状态 原始 肮脏等 又如何呢 我尝试过这样的事情
  • 有没有办法在 C 中进行柯里化?

    假设我有一个指向函数的指针 stack push stack stk void el 我希望能够打电话curry stack push my stack 并返回一个只需要的函数void el 我想不出一种方法来做到这一点 因为 C 不允许运
  • 重定向时向 Zuul 添加标头

    我正在尝试使用Zuul将调用重定向到其他地方的下游系统 在重定向中 我需要添加一个包含必要数据的标头api接收重定向以进行处理 我似乎无法让下游系统检测到这些数据 附件是我的代码 我在用Zuul from Edgware SR3 Sprin
  • 杀死 Pthread 库中的线程

    I use pthread create thread1 attrs 如果发生某种情况需要杀死这个线程如何杀死它 首先存储线程id pthread create thr 然后稍后打电话 pthread cancel thr 但是 这不是推荐
  • C 中的“由于数据类型范围有限,比较始终为真”警告?

    我有以下代码 Point h define WIDTH 8 define HEIGHT 8 typedef struct Point char x char y Point Board c include