배열이 포함된 집계에 대한 모호한 초기화 구문
C에서 배열이 포함된 집계를 초기화할 때 중괄호를 생략하면 혼란과 오류가 발생할 수 있습니다. 이는 다음 예에서 분명하게 드러납니다.
// Error: Too many initializers std::array<A, 2> a1 = { {0, 0.1}, {2, 3.4} }; // Valid std::array<double, 2> a2 = {0.1, 2.3};
구조의 std::array에 필요한 중괄호
첫 번째 예에서는 std::array가 다음과 같기 때문에 오류가 발생합니다. 집계이며 사용자 정의 생성자가 없습니다. 내부 배열을 초기화하려면 수정된 버전에서 볼 수 있듯이 명시적인 중괄호가 필요합니다.
std::array<A, 2> a1 = { {{0, 0.1}, {2, 3.4}} };
POD의 std::array에는 중괄호가 필요하지 않습니다
반대로, 표준::배열
집합체의 일관성
집계 멤버에 중괄호를 요구하는 원칙은 다음과 같이 다른 유형의 집계에 적용됩니다. 음:
// Valid B meow1 = {1, 2}; B bark1 = {{1, 2}}; C meow2 = {1, 2}; C bark2 = {{1, 2}};
D의 모호성
그러나 다음 예는 오류로 이어집니다.
// Error: Too many initializers D meow3 = {{1, 2}, {3, 4}}; D bark3 = {{{1, 2}, {3, 4}}};
D에서는 초기화 프로그램이 foo 자체가 배열이기 때문입니다. meow3의 중괄호는 foo의 초기화나 내부 배열을 참조할 수 있기 때문에 모호합니다. 모호성을 해결하려면 bark3에서와 같이 명시적인 중괄호가 필요합니다.
집계 초기화 메커니즘
집계 초기화에서 중괄호가 생략되면 몇 가지 규칙이 적용됩니다.
추가 예
위 내용은 배열을 사용한 C 집계 초기화에서 언제 중괄호를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!