第7章 基本数据类型
示例代码:
示例代码7-1
/*
本书设定的<limits.h>的部分内容
*/
#define UCHAR_MAX 255U // unsigned char的最大值
#define SCHAR_MIN -128 // signed char的最小值
#define SCHAR_MAX +127 // signed char的最大值
#define CHAR_MIN 0 // char的最小值
#define CHAR_MAX UCHAR_MAX // char的最大值
#define SHRT_MIN -32768 // short int的最小值
#define SHRT_MAX +32767 // short int的最大值
#define USHRT_MAX 65535U // unsigned short的最大值
#define INT_MIN -32768 // int 的最小值
#define INT_MAX +32767 // int 的最大值
#define UINT_MAX 65535U // unsigned int 的最大值
#define LONG_MIN -2147483648L // long int 的最小值
#define LONG_MAX +2147483647L // long int 的最大值
#define ULONG_MAX 4294967295UL // unsigned long 的最大值
示例代码7-2
/*
显示各种整数数据类型的表示范围
*/
#include <stdio.h>
#include <limits_derek.h>
int main(void)
{
printf("char : %d ~ %d\n", CHAR_MIN, CHAR_MAX);
printf("short int : %d ~ %d\n", SHRT_MIN, SHRT_MAX);
printf("int : %d ~ %d\n", INT_MIN, INT_MAX);
printf("long int : %ld ~ %ld\n", LONG_MIN, LONG_MAX);
return (0);
}
示例代码7-3
/*
判断char型有无符号
*/
#include <stdio.h>
#include <limits_derek.h>
int main(void)
{
printf("这个编译器中的char型是");
if (CHAR_MIN)
puts("有符号的。");
else
puts("无符号的。");
return (0);
}
示例代码7-4
/*
显示数据类型长度
*/
#include <stdio.h>
int main(void)
{
printf("sizeof(char) = %u\n", (unsigned)sizeof(char));
printf("sizeof(short) = %u\n", (unsigned)sizeof(short));
printf("sizeof(int) = %u\n", (unsigned)sizeof(int));
printf("sizeof(long) = %u\n", (unsigned)sizeof(long));
return (0);
}
示例代码7-5
/*
显示unsigned型的位串
*/
#include <stdio.h>
// 返回在整数x中设置的位数
int count_bits(unsigned x)
{
int count = 0;
while (x) {
if (x & 1U) count++;
x >>= 1;
}
return (count);
}
// 返回unsigned型的位数
int int_bits(void)
{
return (count_bits(~0U));