2014-11-07 2 views
0

한 구성원이 다차원 배열을 포함하는 2 명의 직원을 인쇄하려고합니다.출력에 -9.255가 포함 된 이유는 무엇입니까?

struct Employees{ 
    string name; 
    double salary; 
    char skill[5][20]; 
}; 
void main(){ 
Employees Namn[3] = { 
    { "Dawn", 120000, { "C#", "C++" } }, 
    { "John", 13456, { "Java", "C++" } } 
}; 
for (int i = 0; i < 3; i++){ 

    cout << Namn[i].name << "\t"; 
    cout << Namn[i].salary; 
    cout << "\t"; 
    for (int j = 0; j < 5; j++){ 
     for (int k = 0; k < 20; k++){ 
      cout << Namn[i].skill[j][k]; 
      } 
     } 
     cout << endl; 
    } 
} 
+2

'나는 2 명의 직원을 인쇄하려고합니다. '그럼에도 불구하고 3 개의'직원 '을 인쇄하고 있습니다. – user657267

+0

왜 3 명의 직원을위한 공간을 할당하지만 2 명의 데이터 만 제공합니까? 컴파일러/IDE에서 경고 수준을 최대로 설정하십시오. 이 문제에 대한 경고를 받았어야합니다. –

+0

배열을 초기화 할 때 일부 기술이 누락되었습니다. 누락 된 기술 (예 : 빈 문자열)을 제공하고 기본값을 제공하기 위해 컴파일러에 의존하지 마십시오. –

답변

-1

-9.255 출력은 기본값에 의해 발생합니다. {0, 0.0, { "0", "0"}}을 추가해야했습니다. 도와 줘서 고마워.

+1

디버그 모드에서 메모리는 대개 hex cccccccccccccccc 및 hex cccccccccccccccc로 채워집니다. -9.2559631349317831 x 10^061 – rcgldr

+1

'{}'을 사용하여 구조체를 초기화 할 때 나열되지 않은 멤버는 값을 초기화해야합니다 double의 경우 '0.0'으로 초기화 됨); 그래서 이것이 정말로 답변이라면 컴파일러가 매우 깨졌습니다. –

+0

초기화되지 않은 값을 0xCC로 초기화하는 이유를 알고 싶다면 [이 질문을 읽으십시오.] (http://stackoverflow.com/questions/370195/when-and-why-will-an -os-initialize-memory-to-0xcd-0xdd-etc-on-malloc-free-new) –

관련 문제