C ++:初始化,攀爬和放大变量

时间:2012-06-25 13:18:59

标签: c++ initialization limit

免责声明,编程新手,通过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;

}

所以我得到了,它创建了一个变量来设置max int值。

然而,我有什么理由不能也不能去:

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

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

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

任何澄清都会很棒。

1 个答案:

答案 0 :(得分:4)

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

因此INT_MAX的类型为int,因此sizeof INT_MAXsizeof (int)相同。但是,SHRT_MAX也会有int类型,因此sizeof SHRT_MAX不一定等于sizeof (short)