如果不能重新定义变量,如何在 C 中使用复合赋值运算符?
How can you use compound assignment operators in C if you can't redefine variables?
看着 wikipedia 它说:
a -= b;
与
相同
a = a - b;
但是当我在我的 C 程序中尝试这个时,我得到以下错误:
"error: redefinition of 'a'".
这是我的程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10;
int a -= 5;
printf("a has a value of %d\n", a);
return 0;
}
我收到以下错误:
my_prog.c:6:6: error: redefinition of 'a'
int a -= 5;
^
my_prog.c:5:6: note: previous definition is here
int a = 10;
^
my_prog.c:6:8: error: invalid '-=' at end of declaration; did you mean >'='?
int a -= 5;
^~
我在 Mac 上使用 clang。
a
的定义如下:
int a;
a
的初始化是这样完成的:
a = 10;
你在同一个表达式中执行这两个操作:
int a = 10;
现在 a
已定义并初始化。
如果您执行以下操作:
int a -= 5;
在前面的表达式之后,您正在重新定义 a
,因此出现错误。
您只需要:
a -= 5;
int a = 10
是一个定义。
它将变量名和类型的声明(int a
)与其初始化(a = 10
)相结合。
该语言不允许同一变量的多个定义,但它允许使用赋值运算符多次更改变量的值(a = 10
或 a = a - b
或
a -= b
等)。
您的代码应该是:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10; // declare variable `a` of type `int` and initialize it with 10
a -= 5; // subtract 5 from the value of `a` and store the result in `a`
printf("a has a value of %d\n", a);
return 0;
}
看着 wikipedia 它说:
a -= b;
与
相同a = a - b;
但是当我在我的 C 程序中尝试这个时,我得到以下错误:
"error: redefinition of 'a'".
这是我的程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10;
int a -= 5;
printf("a has a value of %d\n", a);
return 0;
}
我收到以下错误:
my_prog.c:6:6: error: redefinition of 'a' int a -= 5; ^ my_prog.c:5:6: note: previous definition is here int a = 10; ^ my_prog.c:6:8: error: invalid '-=' at end of declaration; did you mean >'='? int a -= 5; ^~
我在 Mac 上使用 clang。
a
的定义如下:
int a;
a
的初始化是这样完成的:
a = 10;
你在同一个表达式中执行这两个操作:
int a = 10;
现在 a
已定义并初始化。
如果您执行以下操作:
int a -= 5;
在前面的表达式之后,您正在重新定义 a
,因此出现错误。
您只需要:
a -= 5;
int a = 10
是一个定义。
它将变量名和类型的声明(int a
)与其初始化(a = 10
)相结合。
该语言不允许同一变量的多个定义,但它允许使用赋值运算符多次更改变量的值(a = 10
或 a = a - b
或a -= b
等)。
您的代码应该是:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10; // declare variable `a` of type `int` and initialize it with 10
a -= 5; // subtract 5 from the value of `a` and store the result in `a`
printf("a has a value of %d\n", a);
return 0;
}