2

免责声明,编程新手,通过 C++ Prime Plus 第 6 版工作。

我正在通过清单 3.1 工作。

#include <iostream> 
#include <climits>
int main()
{
    using namespace std;
    int n_int = INT_MAX;
    cout << "int is " << sizeof n_int << " bytes." << endl;

    return 0;

}

所以我明白了,这会创建一个变量来设置最大 int 值。

但是,有什么理由我不应该也不能去:

cout << "int is " << sizeof (INT_MAX) << " bytes." << endl;

因为它给出了正确的长度。但是当我尝试使用 ( SHRT_MAX) 时,它返回 4 个字节,而我希望它会返回 2。

再次使用 ( LLONG_MAX) 它正确返回 8 个字节,但是 ( LONG_MAX) 错误地返回 8。

任何澄清都会很棒。

4

1 回答 1

4

中定义的值<climits>是扩展为整数文字的宏。整数字面量的类型是可以容纳该值的最小整数类型,但不小于int.

所以INT_MAX会有类型int,所以和sizeof INT_MAX一样sizeof (int)。但是,SHRT_MAX也会有 type int,所以sizeof SHRT_MAX不一定 equal sizeof (short)

于 2012-06-25T13:58:55.680 回答