已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
上个月关门了。
Improve this question
我在学C。我有一个小问题,我不能解决。
如果我写“int characterAge = 35;在几行之后我写上“int characterAge = 20;“,程序将输出错误:
program.c: In function ‘main’:
program.c:11:7: error: redefinition of ‘characterAge’
11 | int characterAge = 20;
| ^~~~~~~~~~~~
program.c:6:7: note: previous definition of ‘characterAge’ with type ‘int’
6 | int characterAge = 35;
| ^~~~~~~~~~~~
怎么了?
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char characterName[] = "John";
int characterAge = 35;
printf("Character name is %s\n", characterName);
printf("Character age is %d\n", characterAge);
int characterAge = 20;
printf("He was %d\n", characterAge);
return 0;
}
2条答案
按热度按时间iecba09b1#
这将创建一个名为
characterAge
的变量(初始化为35):这将创建第二个名为
characterAge
的变量(初始化为20):现在有两个名为
characterAge
的变量,只有一个是可访问的。这绝对是一件值得警惕的事情。或者为第二个变量使用不同的名称
或者重复使用相同的变量
第三个解决方案是限制变量的范围。
cwtwac6a2#
int characterAge = 35;
不是赋值。它是一个声明,= 35
指定characterAge
的初始值。此外,带有初始化的声明也是一个定义;它指示编译器去创建对象。(不是定义的声明只是告诉编译器关于的东西,而不一定要创建它。当编译器看到
int characterAge = 20;
时,您告诉它给予characterAge
**初始值20。但您之前告诉它将初始值给予characterAge
为35。一个事物不能有两个初始值。你不能创造两次。
characterAge
应该只有一个定义。如果你想在
characterAge
创建后改变它的值,你可以使用赋值: