2016-07-19 2 views
0
int path[10]={'_', '_', '_', '_', '_', '_', '_', '_', '_', '_'}; 
for (int b=0;b<=9;b++) { 
    cout << path[b]; 
} 

Когда я пытаюсь запустить это, чтобы отобразить горизонтальную линию, он просто отображает много 9 и 5 секунд. Но, если я запускаю этот кодОшибка при отображении элементов массива

for (int b=0;b<=9;b++) { 
    cout << '_'; 
} 

Кажется, что делает работу. Я знаю, что могу просто использовать второй код, но мне нужно отобразить его с помощью массива.

+1

Различают 'char' и' int'. –

+0

О, мой. Такая ужасная ошибка. Спасибо! –

ответ

3

path является массивом int, при печати из ее элементов int значение (то есть код ASCII 95 для '_') будут распечатаны. Если вы хотите, чтобы это было напечатано, как char, вы должны изменить декларацию от

int path[10]={'_', '_', '_', '_', '_', '_', '_', '_', '_', '_'}; 

в

char path[10]={'_', '_', '_', '_', '_', '_', '_', '_', '_', '_'}; 
1

В первом примере вы объявляете path как массив int и он получает интерпретируется std::cout как int (код ASCII для _ равен 95). Для того, чтобы заставить его работать, вы должны изменить декларацию:

int path[10]={'_', '_', '_', '_', '_', '_', '_', '_', '_', '_'}; 

Во втором примере вы выводите '_' к std::cout, который является char типа и отображаются, как вы ожидали.

Смежные вопросы