C语言中的预期标识符

C语言中的预期标识符,c,declaration,C,Declaration,我得到的错误是预期标识符或浮点之前的错误。任何帮助都将不胜感激。我读过它可能和fprod后面的分号有关?我尝试过添加诸如float-fsum和float-fprod之类的括号,以及删除带括号和不带括号的分号 int main (void) { int x, y, z, fx, fy, fz, sum, prod, float fsum, float fprod; //The error occurs on line 9.

我得到的错误是预期标识符或浮点之前的错误。任何帮助都将不胜感激。我读过它可能和fprod后面的分号有关?我尝试过添加诸如float-fsum和float-fprod之类的括号,以及删除带括号和不带括号的分号

int main (void)

{

int x, y, z, fx, fy, fz, sum, prod, float fsum, float fprod;
                                   //The error occurs on line 9. The above is line 9
    printf("\n Enter the first integer number: ");
    scanf("%d", &x);
            if( x<=0){
            printf("\n Invalid entry. Entry must be greater than 0.");
            scanf("%d",&x);
    }

    printf("\n Enter the second integer number: ");
    scanf("%d", &y);
            if( y<=0){
            printf("\n Invalid entry. Entry must be greater than 0.");
            scanf("%d",&y);
    }

不能在同一声明中声明不同类型的变量。改变

int x, y, z, fx, fy, fz, sum, prod, float fsum, float fprod;

正如一些评论所指出的,将所有变量分组到一个声明中是一种不好的做法。最好根据功能或位置将它们分开。这实际上取决于您的计划,但您可以这样做:

int x, y, z;
int fx, fy, fz;
int sum, prod;
float fsum, fprod;
另外,将变量初始化为一些正常值也是一个好主意,因为它们将包含随机的未定义值,如果您试图在未成功设置它们的情况下使用它们,则可能会出现难以发现的错误。因此:

int x = 0, y = 0, z = 0; // or some other value if it makes sense
int fx = 0, fy = 0, fz = 0;
int sum = 0, prod  = 0;
float fsum = 0.0, fprod = 0.0;

抱歉,但变量列表不是这样的。每种新类型都应该从它自己的一行开始。请整理缩进并检查返回值scanf@Jongware在一条新的生产线上开始一种新的类型没有这样的要求。一行可以放多少声明和语句。甚至整个程序都可以写在一行上。我们假设对于这个赋值,用户只会输入一次无效的条目,但我知道这会引起一个问题:@Jongware顺便说一句,严格来说,在C语言中声明不是语句。应该注意,将相同类型的所有变量打包到一行也是不好的风格。仅将这些相互关联的变量分组一些编码样式甚至要求每个变量一行-我不会走那么远。@Olaf我同意你的看法。最好写i\n\t x,y,z,fx,fy,fz,sum,prod;:@olaf我对编程非常陌生,这就是它在课堂上的表现。所以,要确认正确的方法应该是:intx;int-y;intz;等等,都在不同的线路上?@Geoff:只要这些变量在逻辑上相互关联,那么在修正之后,你这样做似乎很好。初始化变量也是一个好主意。我将编辑答案以反映这一点。@Geoff:我想rost的意思是发布的代码。我仍然想知道编译错误是什么。编译器主要捕获语法或语法错误,如果启用,则主要警告类型错误。如果启用,它可能会警告更多可能的故障。
int x = 0, y = 0, z = 0; // or some other value if it makes sense
int fx = 0, fy = 0, fz = 0;
int sum = 0, prod  = 0;
float fsum = 0.0, fprod = 0.0;