Sobes.tech
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;
}