如何在 C 中解析 "expected ';' before '{' token"?
How to resolve "expected ';' before '{' token" in C?
我创建了一个程序来打印相当于罗马的一年,但我的程序显示编译错误。我的程序说:
33 4 C:\Users\ABC\Desktop\c.c [Error] expected ';' before '{' token
这是我的代码:
#include<stdio.h>
main()
{
int a,rom;
printf("Enter the year.");
scanf("%d",&a);
rom=reverse(a);
printf("Roman equivalent of %d is:",a);
}
reverse(int a)
{
int i,rev=0,rem;
for(i=a;i>0;i=i/10)
{
rem=i%10;
rev=rev*10+rem;
}
roman(a);
}
roman(int a)
{
int c=0,i,j,k,l,m;
for(i=a;i>0;i=i/10)
{
m=i%10;
for(j=1;j>0;j--)
{
if(c==0)
{
printf("m\n");
}
elseif(c==1)
{
printf("d\n");
for(l=m-5;l>0;l--)
printf("c");
printf("\n");
}
elseif(c==2)
{
printf("l\n");
for(l=m-5;l>0;l--)
{
printf("x");
}
printf("\n");
}
elseif(c==3)
{
printf("v\n");
for(l=m-5;l>0;l--)
{
printf("i");
}
printf("\n");
}
}
c++;
}
}
使用 else if
而不是 elseif
。
您在 else if
中遗漏了一个 space。它不是 elseif
,而是 else if
错别字,用 else if 代替 elseif
if(c==0)
{
printf("m\n");
}
else if(c==1)
{
printf("d\n");
for(l=m-5;l>0;l--)
printf("c");
printf("\n");
}
C中没有elseif
,必须写else if
(2个分开的字)。
但不可否认错误信息有点误导,但仔细一看其实很正常。
解释:
if(c==0)
{
printf("m\n");
}
elseif(c==1)
{
...
}
编译器假定 elseif
是某个以 int
作为参数的函数的名称,因此它期望在 elseif
的右括号后有一个 ;
;
这是编译器认为你想要的:
if (...)
{
printf("m\n"); // normal conditional statement
}
elseif(c==1) ; // call to some function elseif
{ // unconditional {} block
...
}
如果您在启用所有警告的情况下进行编译,编译器会发出警告,例如
Implicit function declaration of 'elseif'
我创建了一个程序来打印相当于罗马的一年,但我的程序显示编译错误。我的程序说:
33 4 C:\Users\ABC\Desktop\c.c [Error] expected ';' before '{' token
这是我的代码:
#include<stdio.h>
main()
{
int a,rom;
printf("Enter the year.");
scanf("%d",&a);
rom=reverse(a);
printf("Roman equivalent of %d is:",a);
}
reverse(int a)
{
int i,rev=0,rem;
for(i=a;i>0;i=i/10)
{
rem=i%10;
rev=rev*10+rem;
}
roman(a);
}
roman(int a)
{
int c=0,i,j,k,l,m;
for(i=a;i>0;i=i/10)
{
m=i%10;
for(j=1;j>0;j--)
{
if(c==0)
{
printf("m\n");
}
elseif(c==1)
{
printf("d\n");
for(l=m-5;l>0;l--)
printf("c");
printf("\n");
}
elseif(c==2)
{
printf("l\n");
for(l=m-5;l>0;l--)
{
printf("x");
}
printf("\n");
}
elseif(c==3)
{
printf("v\n");
for(l=m-5;l>0;l--)
{
printf("i");
}
printf("\n");
}
}
c++;
}
}
使用 else if
而不是 elseif
。
您在 else if
中遗漏了一个 space。它不是 elseif
,而是 else if
错别字,用 else if 代替 elseif
if(c==0)
{
printf("m\n");
}
else if(c==1)
{
printf("d\n");
for(l=m-5;l>0;l--)
printf("c");
printf("\n");
}
C中没有elseif
,必须写else if
(2个分开的字)。
但不可否认错误信息有点误导,但仔细一看其实很正常。
解释:
if(c==0)
{
printf("m\n");
}
elseif(c==1)
{
...
}
编译器假定 elseif
是某个以 int
作为参数的函数的名称,因此它期望在 elseif
的右括号后有一个 ;
;
这是编译器认为你想要的:
if (...)
{
printf("m\n"); // normal conditional statement
}
elseif(c==1) ; // call to some function elseif
{ // unconditional {} block
...
}
如果您在启用所有警告的情况下进行编译,编译器会发出警告,例如
Implicit function declaration of 'elseif'