Mistähän löytyisi kunnollinen selvitys C -kielen tyypeistä?
Joku vanhempi C -kieln satndardi ilmeisesti sallii funktiomäärittelyn ilman tyyppiä tällöin oletetaan int.
C99 käsittääkseni määrittelee, että tyyppi on pakko mainita, ja antaa ainakin varoituksen jos tyyppi puuttuu.
Mutta ilmeisesti nämä ovat edelleen sallittuja:
Sallittu Suositeltavampi
unsigned -> unsigned int
long -> long int
short -> short int
unsigned long -> unsigned long int
entäpä sitten 64 -bittinen kokonaisluku ?
64 -bittisissä käyttöjärjestelmissä arvatenkin pelkkä int on 64 -bittinen.
Mutta 32 -bittisissä käyttöjärjestelmissä 64 -bittisen kokonaisluvun saadakseen on sitten eri vaihtoehtoja:
_int64
__int64
long long int
jne. riippuen, onko kyseessä gcc, MS C, vai Borland C
edelleen: onko niin, että C99 -standardin mukaista lähdekoodia käännettäessä jotkut kääntäjät saattavat vaatia esim:
gcc -DC99
optiomäärittelyä, ja ilman tuota antavat virheilmoituksen sellaisista lähdekoodissa olevista rakenteista, jotkla ovat C99:n mukaisia mutta eivät esim C89:n mukaisia ?
Joku vanhempi C -kieln satndardi ilmeisesti sallii funktiomäärittelyn ilman tyyppiä tällöin oletetaan int.
C99 käsittääkseni määrittelee, että tyyppi on pakko mainita, ja antaa ainakin varoituksen jos tyyppi puuttuu.
Mutta ilmeisesti nämä ovat edelleen sallittuja:
Sallittu Suositeltavampi
unsigned -> unsigned int
long -> long int
short -> short int
unsigned long -> unsigned long int
entäpä sitten 64 -bittinen kokonaisluku ?
64 -bittisissä käyttöjärjestelmissä arvatenkin pelkkä int on 64 -bittinen.
Mutta 32 -bittisissä käyttöjärjestelmissä 64 -bittisen kokonaisluvun saadakseen on sitten eri vaihtoehtoja:
_int64
__int64
long long int
jne. riippuen, onko kyseessä gcc, MS C, vai Borland C
edelleen: onko niin, että C99 -standardin mukaista lähdekoodia käännettäessä jotkut kääntäjät saattavat vaatia esim:
gcc -DC99
optiomäärittelyä, ja ilman tuota antavat virheilmoituksen sellaisista lähdekoodissa olevista rakenteista, jotkla ovat C99:n mukaisia mutta eivät esim C89:n mukaisia ?
Vastaukset 2
Vanhimmat
Katsoppa stdint.h siellä on määritelty tyypit. Eli uint64_t on 64-bittinen etumerkitön kokonaisluku noin esimerkiksi.
C99:ä noudattamattomat kääntäjät voi kyllä olla rikki tämän suhteen.
http://en.wikipedia.org/wiki/Limits.h