题目的意思就是说要你写一个程序 来确定
signed char
signed short
signed int
signed long
unsigned char
unsigned short
unsigned int
unsigned long
类型的变量的取值范围
这些范围在limits.h库里有具体定义 程序可直接输出
想要计算的话 也很简单 其原理就是sizeof得出字节数
然后signed限定的话 就是2的字节数次方 为最大值 0为最小值 如signed char
printf("signed char : 0-%d\n",pow(2,sizeof(signed char)));
unsigned限定的话 就是2的字节数减一次方 为最大值 负的(2的字节数减一次方减一) 为最小值 同样 如unsigned char
printf("unsigned char: %d-%d\n",-(pow(2,sizeof(unsigned char)-1)-1),pow(2,sizeof(unsigned char)-1));
楼上不应该取字节数,而是位数,字节数*8
如果你知道你机器上这些变量所占字节数的话,有更简单的办法,可以首先设为最大值,让其加1溢出变为最小值,打印出来就是范围。
例如
int a=0x7fffffff;//十六进制,第一位为0,其余为1
unsigned int a=0xffffffff;
a+1就会溢出得到最小值
这个很简单,请参阅下面的程序
#include
#include
using namespace std;
int main()
{
cout<<"char's max: "<<(numeric_limits
}
我支持qxyu(有更简单的办法,可以首先设为最大值,让其加1溢出变为最小值,打印出来就是范围。)能不能把具体程序写出来?