用C/C++测试编译器中关键字占多少个字节?

51 篇文章 38 订阅
  • 用C语言测试自己编译器所占字节的大小,代码实现如下:
#include<stdio.h>
#include<climits>
#include<float.h>

int main()
{
    int* p;
    printf("char = %d\n", sizeof(char));
    printf("signed char = %d\n", sizeof(signed char));
    printf("unsigned char = %d\n", sizeof(unsigned char));

    printf("short = %d\n", sizeof(short));
    printf("signed short = %d\n", sizeof(signed short));
    printf("unsigned short = %d\n", sizeof(unsigned short));

    printf("int = %d\n", sizeof(int));
    printf("signed int = %d\n", sizeof(signed int));
    printf("unsinged int = %d\n", sizeof(unsigned int));

    printf("float = %d\n", sizeof(float));

    printf("double = %d\n", sizeof(double));

    printf("long = %d\n", sizeof(long));
    printf("signed long = %d\n", sizeof(signed long));
    printf("unsigned long = %d\n", sizeof(unsigned long));

    printf("longlong = %d\n", sizeof(LONGLONG));
    printf("p = %d\n", sizeof(p));

    return 0;
}

运行结果如下:
这里写图片描述

  • 再来看一下每个关键字的最大值
#include<iostream>
#include<climits>
using namespace std;

int main()
{
    char n_char = CHAR_MAX;
    char n_schar = SCHAR_MAX;
    char n_uchar = UCHAR_MAX;

    short n_short = SHRT_MAX;
    short n_ushort = USHRT_MAX;

    int n_int = INT_MAX;
    unsigned int n_uint = UINT_MAX;

    float n_float = FLT_MAX;
    float n_maxfloat = FLT_MANT_DIG;
    float n_10float = FLT_MAX_10_EXP;


    long n_long = LONG_MAX;
    long n_Ulong = ULONG_MAX;

    long long n_llong = LLONG_MAX;
    long long n_ullong = ULLONG_MAX;

    cout << "max value is :" << endl;

    cout << "char is:" << n_char << endl;
    cout << "usigned char is:" << n_schar << endl;
    cout << "unsigned char is:" << n_uchar << endl;

    cout << "int is:" << n_int << endl;
    cout << "unsigned int is:" << n_uint << endl;

    cout << "short is:" << n_short << endl;
    cout << "unsigned short is:" << n_ushort << endl;

    cout << "folat is :" << n_float << endl;
    cout << "numbers of float is:" << n_maxfloat << endl;
    cout << "float 10_exp is:" << n_10float << endl;

    cout << "long is:" << n_long << endl;
    cout << "unsigned long is:" << n_Ulong << endl;

    cout << "long long is:" << n_llong << endl;
    cout << "unsigned long long is:" << n_ullong << endl;

    return 0;
}

运行结果:
这里写图片描述

因为char没有最大值,所以这里没有输出结果!

  • 每个关键字的最小值
#include<iostream>
#include<climits>

using namespace std;

int main()
{
    short n_short = SHRT_MIN;

    int n_int = INT_MIN;

    float n_float = FLT_MIN;
    float n_10float = FLT_MIN_10_EXP;


    long n_long = LONG_MIN;

    long long n_llong = LLONG_MIN;

    cout << "min value is :" << endl;

    cout << "int is:" << n_int << endl;

    cout << "short is:" << n_short << endl;

    cout << "folat is :" << n_float << endl;
    cout << "float 10_exp is:" << n_10float << endl;

    cout << "long is:" << n_long << endl;

    cout << "long long is:" << n_llong << endl;

    return 0;
}

运行结果:
这里写图片描述

  • 有关每一个字节的取值范围如下:
    1、char:表示字符型数据,占1个字节(8个二进制位),包含256个不同的整数。

      有符号的范围: -128 ~ 127。每个整数都对应一个字符。整数和字符的对应关系由ASCII码表规定。
    
      无符号的范围:0 ~ 255。
    

2、short:表示短整型数据,一般占2个字节(16个二进制位)。

      有符号的范围:-32768 ~ 32767。

      无符号的范围0到65535。

3、int:表示基本整型数据,一般占4个字节(32个二进制位)。

      有符号的范围:-2147483648 ~ 2147483647。

      无符号的范围:0 ~ 4294967295。

4、long:表示长整型数据,一般占4个字节(32个二进制位)。

      有符号的范围:-2147483648 ~ 2147483647。

      无符号的范围:0 ~ 4294967295。

5、float:表示单精度浮点型数据,一般占4个字节(32个二进制位,1bit(符号位) 8bits(指数位) 23bits(尾数位))。

      范围:-3.40E+38 ~ +3.40E+38 

      精度:6 ~ 7位有效数字

6、double:表示双精度浮点型数据,一般占8个字节(64个二进制位,1bit(符号位) 11bits(指数位) 52bits(尾数位))。

      范围:-1.79E+308 ~ +1.79E+308

      精度:15 ~ 16位有效数字

7、unsigned:表示无符号数据。

8、signed:表示有符号数据,默认不用写。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值