查看原文
其他

【C语言笔记】如何查看数据类型范围?

正念君 嵌入式大杂烩 2021-01-31


知识点一:查看整数范围

当前的编译环境下,你可能不知道int的数据范围是多少,或者记不清无符号短整型的范围是0~65535还是0~65536?这时候就可以按照如下程序进行输出查看:


#include <stdio.h>
#include <limits.h>

/* 输出当前编译器数据类型范围 */
int main(void)
{
 printf("\nchar的范围为: %d —— %d\n", CHAR_MIN, CHAR_MAX);
 printf("unsigned char的范围为: %u —— %u\n\n", 0, UCHAR_MAX);
 
 printf("short的范围为: %hd —— %hd\n", SHRT_MIN, SHRT_MAX);
 printf("unsigned short的范围为: %hu —— %hu\n\n", 0, USHRT_MAX);
 
 printf("int的范围为: %d —— %d\n", INT_MIN, INT_MAX);
 printf("unsigned int的范围为: %u —— %u\n\n", 0, UINT_MAX);
 
 printf("long的范围为: %ld —— %ld\n", LONG_MIN, LONG_MAX);
 printf("unsigned long的范围为: %lu —— %lu\n\n", 0, ULONG_MAX);
 
 printf("long long的范围为: %lld —— %lld\n", LLONG_MIN, LLONG_MAX);
 printf("unsigned long long的范围为: %llu —— %llu\n\n", 0, ULLONG_MAX);
 
 return 0;
}


程序输出结果为:



其中,CHAR_MIN、CHAR_MAX等符号常量是从哪来的呢?其实这些符号常量是头文件limits.h里的宏定义,limits.h内容部分截图如下:



以上输出的范围中,long long与unsigned long long是C99标准引进的新的数据类型,关于C语言的几个标准可以查看小编的上一篇文章:【C语言笔记】什么是ANSI C标准?


知识点二:C语言的预定义宏

标准C语言预处理要求定义某些对象宏,每个预定义宏的名称由两个下划线开头两个下划线结尾,这些预定义宏不能被取消定义(#undef)。

常用的几个预处理宏有:

  • __LINE__:表示当前源代码的行号;

  • __FILE__:表示当前源文件的名称;

  • __DATE__:表示当前的编译日期;

  • __TIME__:表示当前的编译时间;

  • __FUNCTION__:表示当前函数;


代码演示:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 printf("\n");
 printf("当前代码行号:%d\n", __LINE__);
 printf("当前编译日期:%s\n", __DATE__);
 printf("当前编译时间:%s\n", __TIME__);
 printf("当前文件名称:%s\n", __FILE__);
 printf("当前函数名称:%s\n", __FUNCTION__);

 return 0;
}


程序输出结果为:


预定义宏常用于程序运行异常的跟踪,__FILE__,__LINE__,__FUNCTION__这是最常用的组合,表示文件名、行数和函数名。除了以上提到的这五个预定义宏之外,还有C99标准提出的预定义宏如:__STDC_HOSTED__等,有兴趣的可以查一下。


学从难处学,用从易处用。关注小编,每天和小编一起打卡学习。每天进步一点点,加油!



往期精彩推荐

智能桌面天气预报系统(终)

分享一个很酷的技巧

【RT-Thread笔记】裸机系统与多线程系统

【编程练习】求正整数的位数,并逆序打印

【C语言笔记】变参函数

【2018年11月推文汇总】编程学习笔记

【Git笔记】分布式版本控制系统

关注公众号获取更多资源分享!

后台回复:C101,获取【入门C语言最好的书籍】

后台回复:C000,获取【热门C语言电子书】

后台回复:CV001,获取【郝斌C语言教程视频】

后台回复:CV000,获取【热门C语言视频教程】

后台回复:py100,获取【Python电子书】

后台回复:py001,获取【第一本python入门书】

后台回复:天气预报,获取【天气预报项目源码】

后台回复:py007,获取【机器学习视频教程】

后台回复:py006,获取【Python自动化测试教程】

后台回复:py005,获取【人工智能图像处理视频教程】

后台回复:py004,获取【Python人工智能视频教程】

后台回复:py003,获取【Python入门与进阶视频教程】

后台回复:py002,获取【机器学习经典算法视频教程】



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存