免责声明,编程新手,通过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.
任何澄清都会很棒。
答案 0 :(得分:4)
<climits>
中定义的值是扩展为整数文字的宏。整数文字的类型是可以保存该值的最小整数类型,但不小于int
。
因此INT_MAX
的类型为int
,因此sizeof INT_MAX
与sizeof (int)
相同。但是,SHRT_MAX
也会有int
类型,因此sizeof SHRT_MAX
不一定等于sizeof (short)
。