Rozważmy następujący (sztuczny) Przykład:Dlaczego ostream wypisuje `1` dla łańcucha zdefiniowanego jako` volatile char [] `?
#include <cstdio>
#include <iostream>
int main() {
volatile char test[] = "abc";
std::printf("%s\n", test);
std::cout << test << "\n";
}
Kompilacja ją GCC i biegania daje następujący wynik:
$ g++ test.cc
$ ./a.out
abc
1
Jak widać printf
wydruki ciąg poprawnie podczas cout
drukuje 1
. Dlaczego pisanie do cout
powoduje w tym przypadku 1
?
'lotny char [N]' pasuje 'bool' lepiej niż n 'const char *'. Właściwie to nie pasuje do 'const char *' w ogóle. – chris
@sharth świetny połów, nawet nie pomyślałem, aby szukać dup. Są na tyle blisko, że mogą się dobrze scalić. –