前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C语言笔记】如何查看数据类型范围?

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

作者头像
正念君
发布2019-06-26 16:45:51
2.3K0
发布2019-06-26 16:45:51
举报
文章被收录于专栏:嵌入式大杂烩嵌入式大杂烩

1. 知识点一:查看整数范围

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

代码语言:javascript
复制
#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_MINCHAR_MAX等符号常量是从哪来的呢?其实这些符号常量是头文件limits.h里的宏定义,limits.h内容部分截图如下:

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

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

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

常用的几个预处理宏有:

代码语言:javascript
复制
__LINE__:表示当前源代码的行号;

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

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

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

__FUNCTION__:表示当前函数;

代码演示:

代码语言:javascript
复制
#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__等,有兴趣的可以查一下。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 知识点一:查看整数范围
  • 2. 知识点二:C语言的预定义宏
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档