#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!
答案 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))
无效。