表达式必须具有整数或无范围的枚举类型pow()函数

时间:2015-09-08 02:27:10

标签: c

我在c VS 2013中编程

我试图将a [i] num乘以10(max -1 -i)。当max是数组的大小时,i的初始化为(max -1)。即时通讯使用for循环,我 - 。

我正在使用pow()函数,因此必须将i定义为float或double。也许最大,但它不会给我一个错误。

int sum = 0;
float j = 0, i;
int max;

printf("Enter number of digits: ");
scanf_s("%d", &max);

int *a;
a = (int *)malloc(max * sizeof(* a));

for (i = 0; i < max; i++)
{
    printf("\nEnter the %d digt: ", i + 1);
1   scanf_s("%d", &a[i]);
}

for (i = max - 1; i >= 0 ; i--)
{
2   sum = sum + a[i]*pow(10, max -1 -i);
    j++;
}

当尝试编译时,它在第1行和第2行给出了一个错误..指向[i]并说该表达式必须具有整数或未对齐的枚举类型

(max - 1 -i)b.t.w而不是一个额外的变量..我试图最小化它们

帮助?

2 个答案:

答案 0 :(得分:3)

正如错误消息所说。 i必须具有整数类型,例如int。您不能使用float作为数组索引。

答案 1 :(得分:0)

[评论太久了]

如果你在一行中有(或多或少)复杂的表达式没有编译,可以将它分成几行,让编译器有机会指出你不喜欢的内容:

例如替换

sum = sum + a[i]*pow(10, max -1 -i);

通过

sum = 
  sum + 
    a[i] * 
      pow(
        10, 
        max 
          -1 
          -i);

修复错误后,删除那些干净的新行。