【问题标题】:Boolean comparison of dereferenced int* and int failing in CC 中取消引用的 int* 和 int 失败的布尔比较
【发布时间】:2011-02-21 17:25:04
【问题描述】:

我正在 Debian Linux x64 上用 C 语言编写程序。在部分代码中,我有以下 if 语句:

if (*all_drops >= (npes * 128)) {
            break;
}

all_drops 是一个int*,它被分配了一个int 的内存,而npes 是一个int,其值为2。因此,当值为2 时,if 语句应该为真all_drops 中的值至少为 256。但是,在 if 语句评估为 true 的情况下,我已经让变量超过 1000。

我不确定在将取消引用的指针与其他数字进行比较时是否存在细微差别,但我搜索了 Google 并没有找到任何类似的问题(这让我相信我遗漏了一些东西)。您能提供的任何帮助将不胜感激。

【问题讨论】:

  • 不可能!你能告诉我们整个循环吗?
  • 问题绝对不在比较中,它的作用就像你认为的那样。你如何为all_drops分配地址?
  • 它应该可以工作,可能问题出在其他地方;你能隔离出出现问题的最小可编译代码 sn-p 吗?
  • 你是如何分配 all_drops 的?
  • 我正在努力获取可靠失败的代码 sn-p。 @Magnus Hoff 和 @Matteo Italia 是正确的,比较工作正常,问题出在其他地方。

标签: c pointers int dereference


【解决方案1】:

这按预期工作: http://ideone.com/DjHGI

我猜问题可能出在你初始化*all_drops的方式上

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多