【发布时间】:2019-07-26 13:37:06
【问题描述】:
请注意,我做这个奇怪的作业不是因为我不清楚语法或对 c 不熟悉。
我只是想试试如果为 int 分配一个数组会发生什么:
int a = {1, 2, 3};
对此我收到以下警告:
warning: excess elements in scalar initializer
int a = {1, 2, 3};
^
warning: excess elements in scalar initializer
int a = {1, 2, 3};
^
当我打印 a 的内容时,我得到1。
但是当我这样做时:
int a;
a = {1, 2, 3};
我得到一个错误:
error: expected expression before ‘{’ token
a = {1, 2, 3};
^
虽然我知道数组并不意味着分配给int 变量,但上述结果让我产生疑问:
-
int x; x = ...和int x = ...的区别
和
- 究竟是什么导致了警告或错误消息?
【问题讨论】:
-
他们都错了,错误消息的内容是什么以及任何行为都取决于编译器编写者
-
所以错误消息或警告完全独立于我进行初始化的方式(直接与在两个单独的行上)?
-
可能是编译器在初始化时分配了它的地址,或者它自动取消对第一个元素的引用,等等。但在分配的情况下,它实际上取决于编译器的设计方式。尝试在不同的编译器中运行您的代码以查看更改...
-
写
int a[3] = {1, 2, 3}; -
@AlejandroBlasco,或者更好,
int a[ ] = {1, 2, 3};
标签: c arrays initialization variable-assignment