operator sizeof
Ostatnio zmodyfikowano 2013-11-24 17:45
starter87 Temat założony przez niniejszego użytkownika |
operator sizeof » 2013-11-24 17:06:25 Witam, mam taki prosty programik zwracający wielkość stałej typu char. Czy mógłby mi ktoś wytłumaczyć dlaczego bez względu na długość imienia jakie przypiszę wielkość jego wynosi 1 bajt ? Być może brak mi teorii, ale nie rozumiem tego... #include<stdio.h> int main( void ) { char imie; int rozmiar; imie = 'sdfcgrvthyjjkljnhbgvfcdetrfgyhu'; rozmiar = sizeof imie; printf( " Twoje imie w bajtach wynosi %d", rozmiar ); return 0; } |
|
pekfos |
» 2013-11-24 17:08:49 char to jeden znak. |
|
starter87 Temat założony przez niniejszego użytkownika |
» 2013-11-24 17:12:54 to jak należy zmienić kod, aby program zwracał mi wielkość imienia ? |
|
kubek3898 |
» 2013-11-24 17:13:45 Wykorzystaj tablicę char'ów lub klasę std::string.
@edit
I odpowiednio funkcję strlen() ze standardu C lub metodę length() czy size() (obie robią to samo) z klasy std::string. |
|
starter87 Temat założony przez niniejszego użytkownika |
» 2013-11-24 17:42:13 #include<stdio.h> int main( void ) { char imie[ 9 ]; int rozmiar, litery; imie = 'Angelika'; litery = strlen( imie ); rozmiar = sizeof imie; printf( " Twoje sklada sie z %d liter, a w bajtach wynosi %d", litery, rozmiar ); return 0; } Podałam 9, żeby uwzględnić znak zerowy i pokazuje mi się character constant too long for its type [enabled by default] |
|
pekfos |
» 2013-11-24 17:45:05 Między apostrofy podaje się tylko jeden znak. Poza tym, nie można tak kopiować stringów, ani tak określać ich rozmiaru. sizeof zadziała tak, jak myślisz tylko w tym przypadku: char imie[] = "Asdf"; rozmiar = sizeof imie; |
|
« 1 » |