繁体   English   中英

警告:while 循环中指针和整数的比较

[英]Warning: Comparison between pointer and integer in while loop

我正在编写一个程序,要求用户输入三天内的高温和低温。 每天的高温必须大于低温,高温不得大于41,低温不得小于负-41。

我在第一天的输入之后写了一个while语句,但是,我得到了指针和整数之间的错误比较。

我认为这与我使用集合整数有关,所以我尝试只做一个涉及高大于低的while语句,这导致程序工作,但我发现 while 循环被完全跳过。 到目前为止,这是我的代码:

编辑:我开始明白我的while循环出了什么问题。 我相信这是因为我忽略了将数组中的值分配给高和低,并且如果用户满足while循环的条件,我也忽略了重新运行代码。 最初,我写了它,所以 high 和 low 没有任何价值, while条件被困在一个无限循环中,因为我没有在满足条件后给它一些执行的东西。

#include <stdio.h>
#define NUMS 3

int main (void)

{
int high[NUMS];
int low[NUMS];
int max = 40;
int min = -40;

    printf ("---===IPC Temperatur Analyzer ===---\n");

    printf ("Enter the high value for day 1: ");
    scanf ("%d", &high);

    printf ("Enter the low value for day 1: ");
    scanf ("%d", &low);

     while (high[0] > max || low[0] > min || high[0] < low[0]) {
           printf("Try again\n");

           printf ("Enter the high value for day 1: ");
           scanf ("%d", &high[0]);

           printf ("Enter the low value for day 1: ");
           scanf ("%d", &low[0]);

    }

    printf ("Enter the high value for day 2: ");
    scanf ("%d", &high[1]);

    printf ("Enter the low value for day 2: ");
    scanf ("%d", &low[1]);

    printf ("Enter the high value for day 3: ");
    scanf ("%d", &high[2]);

    printf ("Enter the low value for day 3: ");
    scanf ("%d", &low[2]);

return 0;

}

每天的高温必须大于低温,高温不得大于41,低温不得小于负-41。

我已经修改了您的代码并编写了评论以了解:

#include <stdio.h>
#define NUMS 3

int main (void)

{
int high[NUMS];
int low[NUMS];
const int MAX = 41;
const int MIN = -41;

    printf ("---===IPC Temperatur Analyzer ===---\n");

    printf ("Enter the high value for day 1: ");
    scanf ("%d", &high[0]);       //address of first element

    printf ("Enter the low value for day 1: ");
    scanf ("%d", &low[0]);        //address of first element

    /*Check for User Input Value*/
     while (high[0] > MAX || low[0] < MIN || high[0] < low[0]) {

           printf("Try again\n"); 

           printf ("Enter the high value for day 1: ");
           scanf ("%d", &high[0]);

           printf ("Enter the low value for day 1: ");
           scanf ("%d", &low[0]);


    }

    printf ("Enter the high value for day 2: ");
    scanf ("%d", &high[1]);

    printf ("Enter the low value for day 2: ");
    scanf ("%d", &low[1]);

    //TODO-:/*Check for User Input Value*/

    printf ("Enter the high value for day 3: ");
    scanf ("%d", &high[2]);

    printf ("Enter the low value for day 3: ");
    scanf ("%d", &low[2]);
    //TODO-:/*Check for User Input Value*/

    //TODO-:/*Print the all value*/

return 0;

}

Todo 部分你可以参考其他部分的代码来完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM