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

question-closed kownwersja przy inicjalizacji klamrowej c++ 11

Object Storage Arubacloud
0 głosów
267 wizyt
pytanie zadane 27 kwietnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 27 kwietnia 2017 przez Jakub 0

hej, niedawno zacząłem poznawać książkę "Język C++ Szkoła Programowania wydanie Vl" . Początkowe lekcja są dla mnie łatwe bo znam te informację z kursów pana Mirosława Zelenta , jednak natknąłem się ta pewien fragment kodu i wydaje mi się on dziwny , może najpierw podam kod programu zapisanego w książce (i z niektórymi moimi komentarzami) :

const int code = 66; //stała symboliczna
int x=66;//zmienna 

char c1{31325}; //zawężenie typu ,niedozwolone (a mi kompilator nie daje nic znać)
char c2 = {66}; //dozwolone bo char mieści wartość 66 
char c3{code}; //jak wyżej ale nie ma znaku "=" , czy to coś zmienia ??
char c4 = {x}; //niedozwolone bo x nie jest stałą (rozumiem) 

x = 31325;
char c5 = x; //dozwolone w tej składni inicjalizacji (to rozumiem)

według tego co piszę w książce na przykład po napisaniu takiej instrukcji : char c4 = {x}; kompilator powinien wyrzucić błąd bo użyliśmy inicjalizacji klamrowej , problem jest taki że u mnie wszystko działa ok indecision.

Poza tym nie wiem czy jest różnica między takim zapisem : char c4{x} a char c4={x} , wiem że to może być proste ale nie do końca rozumiem o co tu chodzi . Dziękuje za wszelką pomoc w komentarzach :)

 

komentarz zamknięcia: już znam odpowiedź :)
1
komentarz 27 kwietnia 2017 przez Wiciorny Ekspert (270,150 p.)
edycja 27 kwietnia 2017 przez Wiciorny
Sprawdz, że podczas kompilacji powinieneś dostać "Warrning btw"

1 odpowiedź

+2 głosów
odpowiedź 27 kwietnia 2017 przez Wiciorny Ekspert (270,150 p.)
wybrane 27 kwietnia 2017 przez Jakub 0
 
Najlepsza

char c4{x} a char c4={x}

Jest różnica,  zrozumieć musisz idee przypisania i dzialania operatora. 

Zazwyczaj przy zapisie bez operatora "x" nowe wersje programów z kompilatora +14 traktują to jako, argumenty domyślne dla konstruktora, więc generalnie inicjują chara,  tak jakbys podał argument. w Drugim następuje inicjalizacja przez przypisanie i operator  więc tutaj może błąd wynikać z semantyki takiego działania 

 

Druga sprawa kompilator nie zauważy błędu i w książce masz to napisane, jednak zwróci Ci warninga !  bo zmienna, nie będaca  stała jak sama  wskazuje "moze sie zmieniać bo nabierząco możemy coś przypisywać do niej, jednak char- sam w sobie zmienny byc nie może . Sprawdz co generuje np strumieć wyjścia?

A no wygeneruje ci " znak z klawiatury" 

komentarz 27 kwietnia 2017 przez Jakub 0 Pasjonat (23,120 p.)
dzięki wielkie za pomoc , teraz to już nieco bardziej rozumiem :) ,pozdrawiam

Podobne pytania

–2 głosów
4 odpowiedzi 949 wizyt
+8 głosów
4 odpowiedzi 2,190 wizyt
pytanie zadane 26 lutego 2019 w Offtop przez KazikBozia Obywatel (1,600 p.)
0 głosów
0 odpowiedzi 112 wizyt

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...