←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

C++
[ROZWIĄZANE] Kilka rzeczy / pytań których...

Locked

  • +
  • -
Kaleka's Photo Kaleka 22.11.2011

Witajcie.
Mam do was kilka pytań dotyczących C++, ponieważ podczas czytania książki "C++ dla każdego" nie zrozumiałem wszystkich rzeczy :(

1. Typy zmiennych:
int (16bit) przechowuje od -32 768 do 32 767
int (32bit) przechowuje od -2 147 483 648 do 2 147 483 647

Teraz pytanko jeżeli w pluginie jest int coś, to ma to 16bit czy 32bit? Jak zadeklarować że int wynosi np 32 a nie 16? Jak jest domyślnie, 16 czy 32 ; d?

2. Tworzenie aliasów za pomocą typedef

Przykład:
typedef unsinged short int USHORT

czy zadziała takie coś?
typedef long int int

Ponieważ jest już samo int, czy da radę żeby w pluginie w ten sposób podmieniało wszystkie int na long int?
Czy jest różnica pomiędzy
typedef long int int

a
typedef long int INT

Z tego co wyczytałem to c++ inaczej traktuje wielkość liter, czyli z dużym INT powinno zadziałać.


3. Stałe
Stałe nie mogą być zmienne podczas działania programu, natomiast gdyby to wyglądało tak:
#define przykladowa_stala = cos_co_sie_zmienia_podczas_dzialania_programu // ?


Czy jeżeli zamiast (przykład z książki):
const unsigned short int studendsPerClass = 15;

Dałbym
const studensPerClass = 15;

To zadziałałoby ?

Czy lepiej używać #define czy const? Podobno define jest przestarzałe i powinno się używać const, jednak w wielu pluginach widzę define.


No to na tyle ; D Dla niektórych moje pytania mogą się wydawać śmieszne ;P
Quote

  • +
  • -
Hiroshima's Photo Hiroshima 22.11.2011

Automatyczna wiadomość


Ten temat został przeniesiony z forum:
InneProgramowanieProblemy
do
InneProgramowaniePytania

Quote

  • +
  • -
Fili:P's Photo Fili:P 22.11.2011

Co do 3, to lepiej używać const,
a jeśli chodzi o to:

const unsigned short int studendsPerClass = 15;

To napisz po prostu

const short int studendsPerClass = 15;

Zostawiłem short, ponieważ short int jest mniejszy i chyba autor książki celowo umieścił short int, a nie int.

Pozdrawiam.
Quote

  • +
  • -
Kaleka's Photo Kaleka 22.11.2011

Co do 3, to lepiej używać const,
a jeśli chodzi o to:

const unsigned short int studendsPerClass = 15;

To napisz po prostu

const short int studendsPerClass = 15;

Zostawiłem short, ponieważ short int jest mniejszy i chyba autor książki celowo umieścił short int, a nie int.

Pozdrawiam.



Jeżeli dałbym
const studentsPerClass = 15;

Nie zadziałałoby ?
Quote

  • +
  • -
Fili:P's Photo Fili:P 22.11.2011

Prawdopodobnie kompilator wziąłby to za int, ale lepiej napisać:

const int studentsPerClass = 15;

Ale pamiętaj że:
  • byte - 1 bajt – zakres od -128 do 127
  • short - 2 bajty – zakres od -32 768 do 32 767
  • int - 4 bajty – zakres od -2 147 483 648 do 2 147 483 647
  • long - 8 bajtów – zakres od -2^63 do (2^63)-1 (posiadają przyrostek L, lub l)
Więc myślę że lepiej użyć short int ( powyższy tekst zaczerpnięty z javastart.pl > Kurs java > Typy danych)
Dałem to, ponieważ chodzi o short i int.
Edited by Fili:P, 22.11.2011 14:09.
Quote

-PainKiller-'s Photo -PainKiller- 22.11.2011

1. chyba wyrwana z kontekstu, tego się raczej nie deklaruje - to z czegoś wynika.
Quote

  • +
  • -
DarkGL's Photo DarkGL 22.11.2011

nie ucz się w kontekście pluginów pawn a c++ to różnica i nie wszystko jest takie same
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 22.11.2011

ehh unsigned to poprostu typ bez znaku wiec czy dasz const int xxx=5 czy const unsigned short int xxx=5 to zachowa sie to tak samo

co do typow danych to zawsze spotykalem sie z tym ze int byl 4 bajtowy (32-bitowy) to zalezy od kompilatora nie od nas

co do typedef chyba nie mozna tam stosowac jako ostatniego "argumentu" slowa kluczowego z jezyka ale pewny nie jestem

const vs define roznica jest taka ze define jest podczas pracy preprocesora zamieniane na jakies wyrazenie a w miejsce Const'a jest wstawiana wartosc zmiennej oraz jej adres przez co na consta mozna wskazywac wskaznikiem a define to bardziej jest uzywane do makrodefinicji sprawdzających czy dany plik zostal juz zalączony kiedy mamy wiele plikow w projekcie
Quote

  • +
  • -
ExBiT's Photo ExBiT 22.11.2011

A tam. Nie zawracaj sobie głowy jakimiś niepotrzebnymi zmiennymi. Od razu ciśnij na stringach/tabach ^^ A tak na poważnie, to wystarczy pogooglać.

to zalezy od kompilatora nie od nas


Nie pierdziel chociaż takich bzdur. Kompilator może jeszcze za nas program napisze?

- short int ma 16 bitów,
- int/long int ma 32 bity
- long long int ma 64 bity

Zapewne o to chodziło autorowi książki.

Jeszcze coś do tematu. Możesz również używać "zapomnianych deklaracji". Chodzi mi tutaj o '__int8', __int16, etc. Działają one tak samo tak jak te wyżej wymienione, tyle że '__int8'=='char'.
Edited by ExBiT, 22.11.2011 22:19.
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 22.11.2011

Nie pierdziel chociaż takich bzdur


z tego co mi wiadomo to jednak kompilator ustala rozmiar typow danych (a raczej tworcy konkretnie zalezy to od tego w jakiej technologii dziala kompilator (16bit/32bit) jesli nie znasz tematu to sie nie wypowiadaj a __int8 == char tylko dla tego ze mają ten sam rozmiar
Quote

  • +
  • -
ExBiT's Photo ExBiT 22.11.2011

z tego co mi wiadomo to jednak kompilator ustala rozmiar typow danych

jesli nie znasz tematu to sie nie wypowiadaj


http://pl.wikipedia....28typ_danych%29

Chcesz mi powiedzieć, że każdy typ danych w incie poprzedzony byle jakim przedrostkiem zajmuje tyle samo bitów? Pokaż mi lepiej taką adnotację w internecie, bo na słowo Ci nie wierze.. Tak na marginesie, to zaczyna się robić lekki spam.

PS. Od kiedy short int ma taką samą wielkość jak unsigned long long int??

EDITED: Przeszukałem cały internet przez google i takiej informacji nie znalazłem. Być może jestem idiotą i wprowadzam siebie głębiej w błąd, albo Ty nie umiesz się przyznać do napisania bzdury.

EDITED2:


Ale pamiętaj że:

byte - 1 bajt – zakres od -128 do 127
short - 2 bajty – zakres od -32 768 do 32 767
int - 4 bajty – zakres od -2 147 483 648 do 2 147 483 647
long - 8 bajtów – zakres od -2^63 do (2^63)-1 (posiadają przyrostek L, lub l)

Więc myślę że lepiej użyć short int ( powyższy tekst zaczerpnięty z javastart.pl > Kurs java > Typy danych)
Dałem to, ponieważ chodzi o short i int.


Nawet kolega potwierdza, to co ja mówię.
Edited by ExBiT, 22.11.2011 22:35.
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 22.11.2011

Chcesz mi powiedzieć, że każdy typ danych w incie poprzedzony byle jakim przedrostkiem zajmuje tyle samo bitów


gdzie ja takie cos napisalem ??

w linku ktory podales jest tabelka a nad nią zdanie o tresci

Zakresy liczb całkowitych możliwych do przedstawienia za pomocą danego typu (w przypadku GCC 3.3.5) przedstawia poniższa tabela:


GCC to kompilator jest wiec EOT
Quote

  • +
  • -
Kaleka's Photo Kaleka 23.11.2011

Ok, dzięki za wszystkie odpowiedzi, dam jutro + ponieważ dzisiaj już wyczerpałem limit :lol:
Do zamknięcia ; D
Quote

  • +
  • -
DarkGL's Photo DarkGL 23.11.2011

wielkość dla danych zależy od wersji kompilatora i komputera (16 bit / 32 bit / 64 bit )
dla kompilatorów 32 bitowych int zajmuje 32 bity
jednak na kompilatorze 16 bitowym będzie on zajmował 16 bitów
możemy być jednak pewni że zawsze char będzie miał co najmniej 8 bitów , int co najmniej 16 a long co najmniej 32 bity
Quote

  • +
  • -
Onyke's Photo Onyke 24.11.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked