为什么长长和长长的最大值产生相同的输出

Why do the max values of long and long long produce the same output?

本文关键字:输出 长长的 最大值 为什么      更新时间:2023-10-16
#include <iostream>
using namespace std;
#include <climits>
int main () {
    int n_int = INT_MAX;
    short n_short = SHRT_MAX;
    long n_long = LONG_MAX;
    long long n_llong = LLONG_MAX;
    cout << "int is " << sizeof (int) << " bytes." << endl;
    cout << "short is " << sizeof n_short << " bytes." << endl;
    cout << "long is " << sizeof n_long << " bytes." << endl;
    cout << "long long is " << sizeof n_llong << " bytes." << endl;
    cout << endl;
    cout << "Maximum values:" << endl;
    cout << "int:   " << n_int << endl;
    cout << "short: " << n_short << endl;
    cout << "long:  " << n_long << endl;
    cout << "llong: " << n_llong << endl << endl;
    //cout << endl;
    cout << "Minimum int value = " << INT_MIN << endl;
    cout << "Maximum int value = " << INT_MAX << endl;
    cout << "Bits per byte = " << CHAR_BIT << endl;
    return 0;
}

输出:长和长的变量正在产生完全相同的最大值,我不确定为什么。长度值应该输出2147483647。

int is 4 bytes.
short is 2 bytes.
long is 8 bytes.
long long is 8 bytes.
Maximum values:
int:   2147483647
short: 32767
long:  9223372036854775807
llong: 9223372036854775807
Minimum int value = -2147483648
Maximum int value = 2147483647
Bits per byte = 8

long不能保证长32位;它仅必须是至少 32位。您的实现将long定义为具有64位。请注意,即使longlong long在您的实现上具有相同的范围,但它们还是不同的类型。