#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Rus");
float arr[25];
int i;
double x;
int a, b, c, e, f;
double y = a * pow(x, 2) + b * x + c;
printf("a: ");
scanf_s("%d", &a);
printf("b: ");
scanf_s("%d", &b);
printf("c: ");
scanf_s("%d", &c);
printf("e: ");
scanf_s("%d", &e);
printf("f: ");
scanf_s("%d", &f);
double interval = (f - e) / 25.0 ;
for (int i = 0, double x = e; i < 25; i++, x += interval)
{
printf("%f", y);
x++;
}
system("pause");
}
我得到 [错误]预期标识符或'('在'double'之前 。我该如何解决呢?看来我真的不需要更改
for (int i = 0, double x = e; i < 25; i++, x += interval)
或者我可能是错误的,并且不知道如何编写多个条件。
答案 0 :(得分:2)
是的,你不能那样做。
顺便说一句,这些是声明,而不是条件。仅for
循环的中间部分是条件。
您可以在for
循环的第一部分中声明多个变量,但前提是它们具有相同的基本类型(例如int
):
for (int x = 1, y = 2, z = 3; ...; ...)
您的解决方法是在循环外声明至少一个变量:
{ // this outer block limits the scope of x
double x = e;
for (int i = 0; i < 25; i++, x += interval)
{
printf("%f", y);
x++;
}
}
也就是说,您的代码实际上没有任何意义。您的循环不使用x
,因此没有必要进行设置。另一方面,您要打印25次的值(y
)在循环中不会更改。它设置在主函数的顶部,由未初始化的另一个x
变量计算得出。
您应将y
的声明和初始化移入循环并删除外部x
。另请参见https://stackoverflow.com/a/53238897/1848654。
答案 1 :(得分:1)
您不能用逗号定义多种类型的变量:
for(int i = 0, double x...
相反:
x = e;
for (int i = 0; i<...
和x
已在上面定义。
答案 2 :(得分:1)
您可以将它们嵌入到结构中。我不建议这样做,因为IMO这不是一个好的编码实践,因为它不易理解(乍一看)…
typedef struct {int i; double x;} S;
for (S yourStruct = {0,e}; yourStruct.i < 25 ; yourStruct.i++, yourStruct.x += interval)
{
printf("%f", y);
yourStruct.x++;
}
答案 3 :(得分:0)
这实际上不是for循环的问题:
void f(void)
{
int x, y; // legal - and you can do the same in a for loop's initialization section
int z, double d; // can't do that either, even outside for loop...
};
在单个表达式中声明的所有变量都必须具有相同的(基本!)类型,无论是在for循环,函数体还是全局变量中。 “基本类型” :嗯,因为您在法律上可以做类似int x, *p;
之类的事情,其中x
和p
是不同类型的,但是基本/基础类型两种情况都是int
。