Junior
Πόση μνήμη καταλαμβάνουν τύποι δεδομένων όπως bool, char, short, int, long long, float και double;
sobes.tech AI
Απάντηση από AI
Το μέγεθος των ενσωματωμένων τύπων δεδομένων σε C και C++ δεν ορίζεται αυστηρά από το πρότυπο, εκτός από το sizeof(char), το οποίο είναι πάντα ίσο με 1. Τα άλλα μεγέθη μπορεί να διαφέρουν ανάλογα με την αρχιτεκτονική του επεξεργαστή και τον μεταγλωττιστή. Ωστόσο, υπάρχουν ελάχιστα εγγυημένα εύρη και τυπικά μεγέθη στα περισσότερα σύγχρονα συστήματα (π.χ., x86-64):
| Τύπος δεδομένων | Ελάχιστο εύρος (C/C++) | Συνήθες μέγεθος (bytes) |
|---|---|---|
bool |
Δεν ορίζεται ρητά από το πρότυπο | 1 |
char |
Βασίζεται σε ένα byte (>= 8 bits) | 1 |
short |
>= [-32767, +32767] (>= 16 bits) | 2 |
int |
>= short (>= 16 bits) |
4 |
long long |
>= [-9223372036854775807, +9223372036854775807] (>= 64 bits) | 8 |
float |
Απλή ακρίβεια (συνήθως IEEE 754) | 4 |
double |
Διπλή ακρίβεια (συνήθως IEEE 754) | 8 |
Το πραγματικό μέγεθος μπορεί να προσδιοριστεί χρησιμοποιώντας τον τελεστή sizeof:
#include <iostream>
int main() {
std::cout << "sizeof(bool): " << sizeof(bool) << " bytes" << std::endl;
std::cout << "sizeof(char): " << sizeof(char) << " bytes" << std::endl;
std::cout << "sizeof(short): " << sizeof(short) << " bytes" << std::endl;
std::cout << "sizeof(int): " << sizeof(int) << " bytes" << std::endl;
std::cout << "sizeof(long long): " << sizeof(long long) << " bytes" << std::endl;
std::cout << "sizeof(float): " << sizeof(float) << " bytes" << std::endl;
std::cout << "sizeof(double): " << sizeof(double) << " bytes" << std::endl;
return 0;
}