Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

operator sizeof

Ostatnio zmodyfikowano 2013-11-24 17:45
Autor Wiadomość
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...
C/C++
#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;
}
P-97323
pekfos
» 2013-11-24 17:08:49
char to jeden znak.
P-97324
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 ?
P-97325
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.
P-97326
starter87
Temat założony przez niniejszego użytkownika
» 2013-11-24 17:42:13
C/C++
#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]
P-97339
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:
C/C++
char imie[] = "Asdf";
rozmiar = sizeof imie;
P-97341
« 1 »
  Strona 1 z 1