0

看看维基百科,它说:

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。

4

2 回答 2

4

int a = 10是一个定义。

它将变量名称和类型的声明 ( int a) 与其初始化 ( a = 10) 结合在一起。

该语言不允许同一变量的多个定义,但它允许使用赋值运算符(a = 10a = 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;
}
于 2020-06-29T22:11:45.120 回答
2

的定义a如下:

int a;

的初始化a是这样完成的:

a = 10;

你在同一个表达式中做这两个:

int a = 10;

现在a已定义并初始化。

如果您执行以下操作:

int a -= 5;

在前面的表达式之后,您正在重新定义a,因此出现错误。

你只需要:

a -= 5;
于 2020-06-29T22:09:21.157 回答