Рассмотрим этот (искусственный) пример:
#include <cstdio>
#include <iostream>
int main() {
volatile char test[] = "abc";
std::printf("%s\n", test);
std::cout << test << "\n";
}
Компиляция с помощью GCC и запуск дает следующий результат:
$ g++ test.cc
$ ./a.out
abc
1
Как вы можете видеть, printf
правильно печатает строку, а cout
печатает 1
. Почему запись в cout
создает 1
в этом случае?