【问题标题】:error: ISO C forbids comparison between pointer and integer错误:ISO C 禁止指针和整数之间的比较
【发布时间】:2013-09-18 01:54:27
【问题描述】:

我是编程新手,刚刚读完 Dan Gookin 的 C 书傻瓜。但我想我正在尝试制作小程序来感受这种语言。

我了解到 C 中有一个随机计数器(不是那么随机),显然使用计算机内部时钟有助于使随机计数器更加随机。我在书中看到了一个代码示例,当我想在网格中打印 f() 随机数时它可以工作。但现在我希望程序将其限制为仅 3 个数字,而不是打印出数字中的数字,我有兴趣学习如何让计算机以随机方式返回 printf() 函数。它不一定是 printf() 它真的可以是任何函数,但这似乎是最简单的检查方法。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int rnd(int range);
void seedrnd(void);

int main()
{
    int x;

    seedrnd();
    for(x=0;x<1;x++)
        // printf("%i\t" ,rnd(3));
        if(seedrnd==0)
            printf("Zero");
        else if(seedrnd==1)
            printf("One");
        else
            printf("Two");
    return(0);
}

int rnd(int range)
{
    int r;

    r=rand()%range;
    return(r);
}

void seedrnd(void)
{
    srand((unsigned)time(NULL));
}       

【问题讨论】:

  • if(seedrnd==0) 这对你意味着什么?
  • 另外,你的 for 循环是没用的,除非你为了我们的利益降低了最大值
  • 这些 X for Dummies 系列让我不寒而栗

标签: c++ c random compiler-errors


【解决方案1】:

您放置了seedrnd(指向seedrnd 函数的指针)而不是对rnd(int) 的调用。您的意思是在比较表达式中调用一个函数,而不是使用它的名称:

for(x=0;x<1;x++) {
    int r = rnd(3); // Call rnd(3)
    printf("%i\t", r);
    if(r==0) // Use r, not seedrnd
        printf("Zero");
    else if(r==1)
        printf("One");
    else
        printf("Two");
}

【讨论】:

  • 这很有效,谢谢,我还必须声明“int r;”在 main() 上面,我首先得到了错误 int r not declared,这对我来说都是全新的,但我正在慢慢理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多