Witam!
Mam nastepujacy problem:
char tb[13]{'M', 'CM','D', 'CD', 'C', 'XC','L', 'XL','X', 'IX','V', 'IV','I'};
error: narrowing conversion of '17229' from 'int' to 'char' inside { }
Mógłby ktoś wyjaśnić czemu tak pisze, oraz jak to naprawić?
Coś takiego jak 'CM' itp. nie istnieje w C++. W apostrofach definiujemy literały znakowe, nie łańcuchy znaków. Powinieneś stworzyć tablicę stringów, tzn.:
std::string tb[13]{"M", "CM", ...};
PS Nie spotkałem się z inicjalizacją tablicy bez znaku =. Najwyraźniej jest to możliwe, bo i GCC, jak i VS, to przyjmują. Prosiłbym o źródła tłumaczące tę składnię, bo osobiście takich nie znalazłem.
Z inicjalizacją typu
int tab[1] {5};
spotkałem się w książce Opus Magnum autorstwa Jezrzego Grębosza
A, i dzięki za odpowiedź :D
Coś takiego jak 'CM' itp. nie istnieje w C++.
oczywiście że istnieje
https://en.cppreference.com/w/cpp/language/character_literal
Multicharacter literal, e.g. 'AB', has type int and implementation-defined value.
Nie spotkałem się z inicjalizacją tablicy bez znaku =. Najwyraźniej jest to możliwe, bo i GCC, jak i VS, to przyjmują. Prosiłbym o źródła tłumaczące tę składnię, bo osobiście takich nie znalazłem.
[patrz na formę (2)]
93,631 zapytań
142,553 odpowiedzi
323,056 komentarzy
63,138 pasjonatów
Top 15 użytkowników
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj