错误|一元'*'的无效类型参数(有'int') -

时间:2015-03-17 16:03:46

标签: c++ c

#include <stdio.h>
#include <math.h>
#define OPERAZIONE_BINARIA ((2 ** bin))

int main()
{
    int n, NI, c;
    int fine, conta, bin;

    conta = 1;
    fine = 0;
    bin = 0;
    NI = 0;

    while (fine == 0) {
        if (fine == 0){
            printf("Inserisci un numero! ");
            scanf("%d", &n);
            if (n < 0 || n > 1) {
                printf("Numero non valido!\n");
                break;
            }
            else {
                NI = NI + int(n*OPERAZIONE_BINARIA);
                printf("Vuoi continuare a Inserire? (0(si)/1(no)\n)");
                scanf("%d", &c);
                bin = bin + 1;
                if (c == 0) {
                    fine = 0;
                }
                else {
                    fine = 1;
                }
            }
        }
        else {
            printf("Risultato: %d", NI);
        }
    }
return 0;
}
ERROR: Invalid type argument of unary '*' (have 'int')

C代码构建错误

Ho visto altro su internet ma nulla!非如此来危险! Magaric'èqualcunipiùespertodi me。 Grazie Mille!

3 个答案:

答案 0 :(得分:0)

在注释中提到@ MikeSeymour时,c中没有指数运算符,一般情况下有一个库函数pow()

在您的情况下,您似乎想要 2 bin ,所以这个

#define OPERAZIONE_BINARIA (1 << (bin))

应该有用。

答案 1 :(得分:0)

#include <stdio.h>
#include <math.h>
#define OPERAZIONE_BINARIA (n*((pow(2,bin))))

int main()
{
    int n, c;
    int NI;
    int fine, conta, bin;

    conta = 1;
    fine = 0;
    bin = 0;
    NI = 0;

    printf("Inseririre numeri da 0 a 1 partendo dal bit meno significativo!\n");
    while (fine == 0) {

        if (fine == 0){
            printf("Inserisci un numero! ");
            scanf("%d", &n);

            if (n < 0 || n > 1) {
                printf("Numero non valido!\n");
                break;
            }
            else {
                NI = NI + OPERAZIONE_BINARIA;
                printf("Vuoi continuare a Inserire? (0(si)/1(no)\n)");
                scanf("%d", &c);
                bin = bin + 1;
                if (c == 0) {
                    fine = 0;
                }
                else {
                    fine = 1;
                }
            }
        }
    }
    printf("\n");
    printf("Risultato: %d", NI);
return 0;
}

我解决了:D

答案 2 :(得分:-1)

对于整数类型,没有像**这样的运算符, 变量bin被声明为类型int

int fine, conta, bin;

所以这个宏

#define OPERAZIONE_BINARIA ((2 ** bin))

无效。