-3
#include <stdio.h>
#include "funcs.h"

int main(void)
{
        /* varibles */
        float a[3];
        char operation;
        int num;

        /* header print */
        printf("Enter the operation you would like to use\n");
        scanf("%c", &operation);

        /* ifs */
        if(operation == "*") //warning is here
        {       
                printf("How many numbers would you like to use (max 4)\n");
                scanf("%d", &num);

                switch(num)
                {
                        case 2:
                                printf("enter your numbers\n");
                                scanf("%f", &a[0]);
                                scanf("%f", &a[1]);
                                printf(" the answer is %2f %2f", a[0] * a[1]);
                        break;
                }

        }
}

有什么问题?我得到这个错误

Calculator.c: In function 'main':
Calculator.c:16:15: warning: comparison between pointer and integer [enabled by default]

为什么不编译请帮忙。现在请快速帮助

4

2 回答 2

5

尝试改变

operation == "*"

operation == '*'

这可能是您的问题,因为字符串文字(带双引号的“*”)是 a const char *(指针)operation而是 a char(整数)。有你的警告。

解决这个问题很好,因为如果你忽略它,你会得到非常错误的行为(几乎总是错误的),因为你将一个字符与一个指向字符串的指针进行比较,而不是你期望的两个字符。

ps - @WhozCraig 指出的另一个错误(不是编译器,而是可能的运行时),您的 printf 有 2 个说明符(%2f)但只有 1 个变量。这充其量会导致未定义的行为。

修复为:

printf(" the answer is %2f", a[0] * a[1]);
于 2013-01-06T12:07:27.463 回答
2

您应该更改operation == "*"为,operation == '*'因为单引号用于字符双引号用于字符串,显然,您正在检查字符是否相等。

于 2013-01-06T12:09:43.503 回答