C++ 结构数组的赋值

C++ 结构数组的赋值,c++,c,unix,C++,C,Unix,我有一个结构数组。我想做的是给这些结构的成员赋值。下面的代码有什么问题 #include <stdio.h> typedef struct{ int a1; int a2; }sample; main(){ sample ar[4]={ (1,2), (3,4), (5,6), (7,8) }; int i; for(i=0;i<4;i++){ printf("ar[%d]----%d %d",i,ar[i].a1,a

我有一个结构数组。我想做的是给这些结构的成员赋值。下面的代码有什么问题

#include <stdio.h>


typedef struct{
int a1;
int a2;

}sample;


main(){

sample ar[4]={ 
    (1,2),
    (3,4),
    (5,6),
    (7,8) 
};

int i;
for(i=0;i<4;i++){
    printf("ar[%d]----%d  %d",i,ar[i].a1,ar[i].a2);
     }
}
而不是(或者可能是程序做得对,我正遭受着愚蠢的误解)

你写了:

sample ar[4];
ar[4] = { 
    (1,2),
    (3,4),
    (5,6),
    (7,8) 
};
数组初始值设定项的语法(仅在
ar
初始化期间有效)为:

C11(n1570),§6.7.9初始化
此外,编写可读代码也很重要。

您应该这样初始化向量:

sample ar[4] = {
    {1,2},
    {3,4},
    {5,6},
    {7,8}
};
此外,还应指定
main()
的返回类型:


您应该使用声明进行赋值,并始终使用“{”


不正确,可能是隐式声明。@xavier:什么意思?我应该说-implicit type。如果没有显式返回类型,函数默认为int。至少在某些C标准中。隐式声明意味着编译器不知道函数,但相信它存在,并且您知道如何使用它。
-Werr“或”代码>会隐式声明错误而不是警告。@沙维尔:虽然不是C++。但是,问题是被标记为C和AS C++。我将编辑答案以澄清这是“分配”的Word。但是PrtTF语句的输出是错误的。我将编辑我的。post@kernelmaniac当前位置我已经在我的电脑上测试过了,它似乎工作正常。你期望什么,你得到什么?我期望的是在我的编辑中指定的。请查看。可能是我有一个愚蠢的错误观念。在答案中提供更正后,你将得到正确的结果。显示新问题的完整代码。是的,在printf中为新行添加\n确定。第二个括号(例如{…})应该在作业中的任何地方使用。我使用的是第一个括号(例如(…),然后是Kernef maniac good:)
sample ar[4];
ar[4] = { 
    (1,2),
    (3,4),
    (5,6),
    (7,8) 
};
sample ar[4] = { 
    {1,2},
    {3,4},
    {5,6},
    {7,8} 
};
initializer:   
    assignment-expression 
    { initializer-list } 
    { initializer-list , }
sample ar[4] = {
    {1,2},
    {3,4},
    {5,6},
    {7,8}
};
       int main()
    // ^^^
    // ...
sample ar[4] = { 
    {1,2},
    {3,4},
    {5,6},
    {7,8} 
};