Muuttujat C-kielessä¶
Tositoimiin (0.5p)¶
Kuvaa miten C-kielen muuttuja
int32_t luku = -345; tallentuisi muistiin, joka koostuu 8-bittisistä muistipaikoista.Anna vastaus ao. muodossa alekkain, niin monta 8-bittistä muistipaikkaa kuin tarvitset jokainen omalla rivillään. Tarvittaessa huomioi kurssilla sovitut tavu- ja bittijärjestys. Muistiosoitteet alkaa nollasta ja osoitteessa on siis 4 bittiä. Muistipaikan arvo 8-bittinen. Käytä binäärilukuja.
muistiosoite:sisältö
Esimerkki. Muuttuja
uint8_t esim = 9; tallentuisi muistiin seuraavasti..0000:00001001
Sinun täytyy kirjoittaa yksi rivi jokaista muistiosoitetta kohden.
Sinulla on vain 5 yritystä vastata tähän kysymykseen oikein.
Vihjeet
Viestit
Muistia säästävien muuttujatyyppien valinta (0.75)¶
C-kielessä joidenkin muuttujatyyppien käyttämän muistin määrä riippuu kääntäjästä ja kohdearkkitehtuurista.
Tarkastele seuraavaa ohjelmaa:
#include <stdio.h>
int main(void) {
printf("Size of char: %zu bytes\n", sizeof(char));
printf("Size of signed char: %zu bytes\n", sizeof(signed char));
printf("Size of unsigned char: %zu bytes\n", sizeof(unsigned char));
printf("Size of short int: %zu bytes\n", sizeof(short int));
printf("Size of unsigned short int: %zu bytes\n", sizeof(unsigned short int));
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of unsigned int: %zu bytes\n", sizeof(unsigned int));
printf("Size of signed long int: %zu bytes\n", sizeof(signed long int));
printf("Size of unsigned long int: %zu bytes\n", sizeof(unsigned long int));
printf("Size of float: %zu bytes\n", sizeof(float));
return 0;
}
Kun ohjelma käännetään ja suoritetaan tässä tehtävässä käytettävällä tietokoneella, tulos on seuraava:
Size of char: 1 bytes Size of signed char: 1 bytes Size of unsigned char: 1 bytes Size of short int: 2 bytes Size of unsigned short int: 2 bytes Size of int: 4 bytes Size of unsigned int: 4 bytes Size of signed long int: 8 bytes Size of unsigned long int: 8 bytes Size of float: 4 bytes
Jokainen alla oleva muuttuja voi saada minkä tahansa arvon annetun pienimmän ja suurimman arvon väliltä.
Esittele jokainen muuttuja käyttäen muuttujatyyppiä, joka vie mahdollisimman vähän muistia mutta pystyy silti esittämään koko annetun arvoalueen.
| Muuttuja | Pienin arvo | Suurin arvo |
| a | 'A' | 'Z' |
| b | 0 | 255 |
| c | -129 | 127 |
| e | -32769 | 32767 |
| f | -2147483649 | 2147483647 |
| g | -3.14 | 3.14 |
Tässä tehtävässä:
- Älä käytä
<stdint.h>-otsikkotiedoston tyyppejä, kutenint8_t,uint8_t,int16_ttaiuint16_t. - Muista käyttää tarvittaessa sopivia avainsanoja:
short,long,signed... - Kirjoita vain muuttujien esittelyt. Älä alusta muuttujia.
- Kirjoita yksi esittely per rivi. Älä jätä tyhjiä rivejä tai ylimääräisiä välilyöntejä.
Esimerkiksi:
int a; long int b;
Vihjeet
Viestit
C-muuttujien mysteerit (0.25p)¶
Mitkä seuraavista väittämistä ovat totta? Sinulla on vain 5 vastausyritystä, joten harkitse vastauksiasi huolellisesti.
Vihjeet
Viestit
Anna palautetta
Kommentteja tehtävästä?