Czy jest możłiwość zwiększania liter. EEE. Chodzi mi o coś takiego:
1++ = 2;
A++ = B;
Czy można jakby z a zrobić b :) ??
Czy jest możłiwość zwiększania liter. EEE. Chodzi mi o coś takiego:
1++ = 2;
A++ = B;
Czy można jakby z a zrobić b :) ??
moze znak = (((int)znak)++)
wszystkie zmienne typu char to tak naprawde liczby całkowite z przedziału 0-255 , przechowują one wartości odpowiadające znakom ASCII , czyli jak masz coś takiego :
char znak='A';
to tak na serio pod zmienną znak jest liczba całkowita : 65 . Skoro jest to liczba całkowita to spokojnie można ją inkrementować , czyli jak napiszemy coś takiego :
znak++;
to teraz pod zmienną znak będzie sie kryła liczba 66 , która w kodzie ASCII odpowiada znakowi : B . czyli po wykonaniu instrukcji :
cout
a dlaczego uzywac rzutowania funkcji ? to moim zdaniem bez sensu; [cygaro]
C/C++ ma to do siebie że wszelie operacje są praktycznie mozliwe. Sam dojdziesz do tego. Ale gdy zmiennej nie dasz nazwy, tzn. nie dasz jej konkretnego miejsca w pamięci to jest traktowana jak stała. I gdyby było to możliwe, to przy każdym odwołaniu compilator musiałby stworzyć nową zmienną do której miałbys dostęp tylko w tym własnie odwołaniu...
main{
((char)('a'))++; // to nie przejdzie
char i='A'; // 65- obojętne
i++; // a to owszem
}
... Compilator wywali: Lvalue required (The left side of an assignment operator must be an addressable expression) ... Musisz przydzielić adres (nazwę), a potem możesz z tym robić co chcesz. A ten error, to po prostu zabezpieczenie, przed operacjami na pamięci, które są bez sensu, bo i tak wynik zaraz zostanie stracony.
A co do samego typu char- jesli chodzi o wykorzystanie, sprawdź w opcjach kompilatora, jakie masz defaultowe ustawienia: signed/unsigned, bo to też rzutuje na odwołania.