我在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而不是一个额外的变量..我试图最小化它们
帮助?
答案 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);
修复错误后,删除那些干净的新行。