【C语言笔记】如何查看数据类型范围?
时间:2022-06-24
本文章向大家介绍【C语言笔记】如何查看数据类型范围?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 知识点一:查看整数范围
当前的编译环境下,你可能不知道int的数据范围是多少,或者记不清无符号短整型的范围是0~65535
还是0~65536
?这时候就可以按照如下程序进行输出查看:
#include <stdio.h>
#include <limits.h>
/* 输出当前编译器数据类型范围 */
int main(void)
{
printf("nchar的范围为: %d —— %dn", CHAR_MIN, CHAR_MAX);
printf("unsigned char的范围为: %u —— %unn", 0, UCHAR_MAX);
printf("short的范围为: %hd —— %hdn", SHRT_MIN, SHRT_MAX);
printf("unsigned short的范围为: %hu —— %hunn", 0, USHRT_MAX);
printf("int的范围为: %d —— %dn", INT_MIN, INT_MAX);
printf("unsigned int的范围为: %u —— %unn", 0, UINT_MAX);
printf("long的范围为: %ld —— %ldn", LONG_MIN, LONG_MAX);
printf("unsigned long的范围为: %lu —— %lunn", 0, ULONG_MAX);
printf("long long的范围为: %lld —— %lldn", LLONG_MIN, LLONG_MAX);
printf("unsigned long long的范围为: %llu —— %llunn", 0, ULLONG_MAX);
return 0;
}
程序输出结果为:
其中,CHAR_MIN
、CHAR_MAX
等符号常量是从哪来的呢?其实这些符号常量是头文件limits.h
里的宏定义,limits.h
内容部分截图如下:
以上输出的范围中,long long
与unsigned long long
是C99标准
引进的新的数据类型,关于C语言的几个标准可以查看小编的上一篇笔记:【C语言笔记】什么是ANSI C标准?
2. 知识点二:C语言的预定义宏
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称由两个下划线开头和两个下划线结尾,这些预定义宏不能被取消定义(#undef)
。
常用的几个预处理宏有:
__LINE__:表示当前源代码的行号;
__FILE__:表示当前源文件的名称;
__DATE__:表示当前的编译日期;
__TIME__:表示当前的编译时间;
__FUNCTION__:表示当前函数;
代码演示:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("n");
printf("当前代码行号:%dn", __LINE__);
printf("当前编译日期:%sn", __DATE__);
printf("当前编译时间:%sn", __TIME__);
printf("当前文件名称:%sn", __FILE__);
printf("当前函数名称:%sn", __FUNCTION__);
return 0;
}
程序输出结果为:
预定义宏常用于程序运行异常的跟踪,__FILE__
,__LINE__
,__FUNCTION__
这是最常用的组合,表示文件名、行数和函数名。除了以上提到的这五个预定义宏之外,还有C99标准
提出的预定义宏如:__STDC_HOSTED__
等,有兴趣的可以查一下。
- 我所理解的Remoting(1):Marshaling & Activation[上篇]
- oracle 12c 常见报告获取-AWR
- 人人公司收购美国卡车社区 Trucker Path,未来或探索无人驾驶
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[下篇]
- 《WCF的绑定模型》博文系列汇总[共6篇]
- 快来看看难民营里的高科技超市
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[中篇]
- 如何通过自定义MessageFilter的方式利用按键方式操作控件滚动条[附源代码]
- WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇)
- 《WCF技术剖析》博文系列汇总[持续更新中]
- 关于服务器的运行寿命 你应该知道这些事
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]
- WCF技术剖析之二十一: WCF基本的异常处理模式[上篇]
- 树大招风:细数2017年加密货币市场的幺蛾子事件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于errno的后事妥善处理
- Vue3.0 beta源码学习笔记(三)
- 你会不会分布式系统进程间通信?
- 学以致用C++设计模式 之 “备忘录模式”
- Mybatis学习笔记(三)关联查询以及相关属性
- 学以致用C++设计模式 之 “装饰者模式”
- 学以致用C++设计模式 之 “责任链模式”
- 学以致用C++设计模式 之 “命令模式”
- 学以致用C++设计模式 之 “中介模式”
- 【自然语言处理】利用LDA对希拉里邮件进行主题分析
- 学以致用C++设计模式 之 “代理模式”
- 学以致用C++设计模式 “模板方法模式”
- 学以致用C++设计模式 “抽象工厂模式”
- 学以致用C++设计模式 之 “工厂模式”
- 六大原则不熟?那你学什么设计模式?来来来,赶紧来!