• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ tablica char - narrowing conversion from in to char

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
384 wizyt
pytanie zadane 13 sierpnia 2018 w C i C++ przez niezalogowany

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ć?

1 odpowiedź

0 głosów
odpowiedź 13 sierpnia 2018 przez Patrycjerz Mędrzec (192,320 p.)

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.

komentarz 13 sierpnia 2018 przez niezalogowany

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

komentarz 13 sierpnia 2018 przez Patrycjerz Mędrzec (192,320 p.)
Muszę więc poczytać więcej o nowych standardach języka. Również dziękuję.
1
komentarz 13 sierpnia 2018 przez monika90 Pasjonat (22,940 p.)

Coś takiego jak 'CM' itp. nie istnieje w C++.

oczywiście że istnieje

komentarz 13 sierpnia 2018 przez Hiskiel Pasjonat (22,830 p.)
W takim razie jako co to istnieje?
2
komentarz 13 sierpnia 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)

https://en.cppreference.com/w/cpp/language/character_literal

Multicharacter literal, e.g. 'AB', has type int and implementation-defined value. 

komentarz 13 sierpnia 2018 przez Patrycjerz Mędrzec (192,320 p.)
Człowiek codziennie się czegoś uczy... dzięki.
2
komentarz 13 sierpnia 2018 przez draghan VIP (106,230 p.)

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)]

 

Podobne pytania

–1 głos
1 odpowiedź 838 wizyt
0 głosów
2 odpowiedzi 1,059 wizyt
0 głosów
2 odpowiedzi 3,391 wizyt

93,164 zapytań

142,175 odpowiedzi

321,925 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 453p. - Marcin Putra
  2. 453p. - dia-Chann
  3. 447p. - Łukasz Piwowar
  4. 443p. - CC PL
  5. 431p. - Łukasz Eckert
  6. 428p. - rafalszastok
  7. 423p. - Michal Drewniak
  8. 423p. - Adrian Wieprzkowicz
  9. 418p. - rucin93
  10. 415p. - Mikbac
  11. 410p. - Piotr Aleksandrowicz
  12. 408p. - ksalekk
  13. 402p. - Mariusz Fornal
  14. 401p. - Dawid128
  15. 392p. - ikarek-one
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...