konwersja zmiennej

0

Mam zmienną wskaźnikową typu Char.
Przechowuje ona liczbę np: '1';
Jak podstawić tą jedynkę do zmiennej typu int.

0

char *c;
int i;

*c = 1;
i = *c;
printf("%d", i);

0

Nie wiem czy o to chodzi, ale konwersja z łańcucha na liczbe jest wykonywana przez funkcje atoi().

0

Nie wiem czy o to chodzi, ale konwersja z łańcucha na liczbe jest wykonywana przez funkcje atoi().

Ups [wstyd]
Ja dosyć często używam char, jako typu liczbowego (Najczęściej unsigned char. Brakuje mi tu typu Byte).
A jeżeli chodzi o konwersję to tak.
i = atoi(c);
Ale jeżeli to jest tylko cyfra, to nie potrafię się oprzeć, i zrobić tak:
i = c & 0xF;
:>

0

Mam zmienną wskaźnikową typu Char.
Przechowuje ona liczbę np: '1';
Jak podstawić tą jedynkę do zmiennej typu int.

można to zrozumieć na 2 sposoby :
1.
char *zm=new char;
*zm=1; //*zm przechowuje znak o kodzie ASCII 1
//wtedy mamy :
int i=(int)(*zm);

char *zm=new char[2];
strcpy(zm,"1"); //zmienna przechowuje znak 1 , chyli w ASCII 49 , musi byc tablica z 2 elementow , bo 2 el to znak konca tekstu , moze zle dzialac atoi , jak nie bedzie znaku konca tekstu , moze tez dzialac bez zarzutu , zalezy co bedzie w nastepnej komorce pamieci
int i=atoi(zm);

0

Po pierwsze zmienna wskażnikowa nie przechowuje liczby 1 tylko na nią wskazuje.
Wszystkie wskażniki w 32b komputerach są typu long a przy kompilacji DOS to hiug.
Więc jeżeli masz dwie zmienne typu int i typu char i chcesz wskazywać na nie jednym wskażnikiem to ja ci radzę urzywaj wskażnika typu void
tylko musisz pamiętać o każdorazowym jego rzutowanie przy wykonywaniu operacji bo kompilator może ale nie musi wywalić ci błąd.[code]
int a=5;
char b=1;
int* pa =&a;
char* pb = &b;
void* pp = (void )a;
void
pk = (void *)b;
[/code]
Nie wykonuje się operacji na wskażnikach typu void raczej urzywaj ich przy przekazywaniu jako parametr funkcji a wtedy musisz pamiętać że jako inny parametr musisz podać jakimś swoim oznaczeniem jakiego typu jest ta zmienna.
Ponieważ char zajmuje 1 bajt a int 4 i kiedy na niewiadomego pochodzenia wskażniku wykonasz jakąś perację mogą ci wyjś kompletne głupoty.
Wewnątrz funkcji terz musisz konwertować wskaźnik typu void do wskanika pierwonego typu.
Lub zrub dwie funkcje o tej samej nazwie to samo zwracają tylko podajesz inny parametr kompilator to rozpozna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1