c语言如何输出int范围,如何在没有任何库函数的情况下打印基本数据类型的范围并在C中保持常量?...

该博客介绍了如何在不依赖任何库函数的情况下,用C语言计算并打印基本数据类型(如int,char,short int,unsigned int等)的取值范围。通过使用`sizeof`运算符确定位数,然后根据位数计算最小值和最大值,特别是针对有符号和无符号类型分别进行了说明。程序展示了如何获取和打印这些类型的最小值和最大值。
摘要由CSDN通过智能技术生成

原标题:如何在没有任何库函数的情况下打印基本数据类型的范围并在C中保持常量?

如何编写C代码来打印基本数据类型的范围,如int,char,short int,unsigned int,unsigned char等? 假设有符号数以2的补码形式存储。

我们强烈建议您尽量减少浏览器,并先自行尝试。

以下是无符号数据类型要遵循的步骤。

1)使用sizeof运算符查找给定数据类型的字节数。

2)通过将sizeof的结果乘以8来查找位数

.3)无论数据类型如何,无符号类型的最小值始终为0。

4)无符号类型的最大值是(1 << n) - 1,其中n是数据类型所需的位数。例如,对于通常需要8位的char,最大值为255.以下是签名数据类型要遵循的步骤。1)使用sizeof运算符查找给定数据类型的字节数。2)通过将sizeof的结果乘以8来查找位数.3)有符号类型的最小值是 - (1 <

// C program to print range of basic data types

#include

// Prints min and max value for a signed type

void printUnsignedRange(size_t bytes)

{

int bits = 8*bytes;

// Note that the value of 'to' is "(1 << bits) - 1"

// Writing it in following way doesn't cause overflow

unsigned int to = ((1 << (bits-1)) - 1) + (1 << (bits-1)) ;

printf(" range is from %u to %u \n", 0, to);

}

// Prints min and max value for an unsigned type

void printSignedRange(size_t bytes)

{

int bits = 8*bytes;

int from = -(1 << (bits-1));

int to = (1 << (bits-1)) - 1;

printf(" range is from %d to %d\n", from, to);

}

int main()

{

printf("signed char: ");

printSignedRange(sizeof(char));

printf("unsigned char: ");

printUnsignedRange(sizeof(unsigned char));

printf("signed int: ");

printSignedRange(sizeof(int));

printf("unsigned int: ");

printUnsignedRange(sizeof(unsigned int));

printf("signed short int: ");

printSignedRange(sizeof(short int));

printf("unsigned short int: ");

printUnsignedRange(sizeof(unsigned short int));

return 0;

}

输出:

signed char:范围是-128到127

unsigned char:range从0到255

signed int:范围是从-2147483648到2147483647

unsigned int:range从0到4294967295

signed short int:范围从-32768到32767

unsigned short int:range从0到65535

请注意,上述函数不能用于float。此外,上述程序可能不适用于大于int的数据类型,如'long long int'。我们可以通过将'to'和'from'的数据类型更改为long long int来使其适用于更大的类型。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值