示例

#include <stdio.h>
#include <stdint.h>int main(int argc, char **argv)
{uint8_t uint8_max = ~(uint8_t)0; /*!< 定义无符号字符型型的最大值 */int8_t int8_max = (int8_t)((uint8_t)(~1) >> 1); /*!< 定义有符号字符型的最大值 */uint32_t uint32_max = ~(uint32_t)0;int32_t int32_max = (int32_t)((uint32_t)(~1) >> 1);int8_t int8_min = ~int8_max;printf("Min of int8_t is 0x%X - %d\n", int8_min, int8_min);printf("Max of int8_t is 0x%X - %d\n",int8_max, int8_max);printf("Max of uint8_t is 0x%X - %u\n",uint8_max, uint8_max);printf("Max of int32_t is 0x%X - %d\n", int32_max, int32_max);printf("Max of uint32_t is 0x%X - %u\n", uint32_max, uint32_max);
}
root@seven:~/workspace/test/16.values# gcc value.c
root@seven:~/workspace/test/16.values# ./a.out
Min of int8_t is 0xFFFFFF80 - -128
Max of int8_t is 0x7F - 127
Max of uint8_t is 0xFF - 255
Max of int32_t is 0x7FFFFFFF - 2147483647
Max of uint32_t is 0xFFFFFFFF - 4294967295

解析

最大值

对于无符号整型数据,最大值即为每都是1,所有可以使用位操作运算符~(位非): <unsigned type> max = ~(<unsigned type>)0;
对于有符号整型数据,最大值为符号位为0,其他位都为1: <signed type> max = (<signed type>)((<unsigned type)(~1) >> 1);,先取反,然后使用除2或者右移一位的方式时最高位(符号位)为0(正数),即得到有符号型数据最大值。

最小值

对于无符号整型数据,最小值即为0;
对于有符号整型数据,最小值为能表示的最小负数,由于负数编码为补码表示,故最小值符号位为1(负号),其他位全为0: <signed type> min = ~(max);


——生活不会放弃你,但也不会放过你。

C语言加强学习营(二):定义整型的最大值和最小值相关推荐

  1. C语言(二)— 整型

    编程进阶- C语言(二)- 整型 整型 在C语言中,整型数据一般用short.int.long三种数据类型来声明,int是C语言中常用的声明整形数据的数据类型,在现代的操作系统中,一般是占4字节(By ...

  2. (C语言)二维整型数组的“最大点”(驻点)

    [问题描述] 求二维整型数组的"最大点".二维数组的"最大点"定义为:某个数是所在行的最大值,并且是所在列的最大值.注意:某行或某列上可能有多个"最大 ...

  3. 我的Go+语言初体验——(6)整型有理数数据类型

    我的Go+语言初体验--(6)整型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言使用后缀 'r' 表示有理数,支持整型.分数型.浮点型三种有理数数据类 ...

  4. C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)

    [csharp] view plain copy   <span style="font-family: Arial, Helvetica, sans-serif;"> ...

  5. c语言赋值小数,c语言中将一个浮点型赋值给整型时,会不会四舍五入?

    c语言中将一个浮点型赋值给整型时,不会四舍五入,会直接舍去小数部分的数据,也可以认为是执行了下取整运算. 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分.将整型值赋给浮点型变 ...

  6. 定义整型数组_C语言基础-数组怎么用

    到目前为止,我们了解到C语言中可以使用整型,浮点型和字符型的数据类型来描述我们人类世界的各种数据,但是这些还远远不够-- 我们在IOT领域经常会遇到这样一个数据使用场景:某天的固定时间内,会有多台(我 ...

  7. 定义整型数组_C++数组的定义与初始化(学习笔记:第6章 01)

    数组的定义与使用[1] 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素. 数组的定义 方括号里面列出的常量表达式是数组每一维的下标个数.数组的下标不管从哪一维它都是从 ...

  8. lua语言入门学习(二)lua语言的特点及注意事项

    lua语言入门学习 lua语言的特点及注意事项 文章目录 lua语言入门学习 lua语言的学习地址 一.lua语言特点 1.注释 2.全局变量和局部变量 3.lua数据类型 4.字符串类型 5.多变量 ...

  9. C语言基本数据类型笔记整理(整型、实型/浮点型、字符型、枚举型、构造类型、指针类型、空类型)

    C语言基本数据类型 一.整型 ①有符号整型 ②无符号整型 二.实型 三.字符型 四.枚举型 五.构造类型 ①数组 ②结构体 ③共用体 六.指针类型 七.空类型 一.整型 ①有符号整型 有符号整型 关键 ...

最新文章

  1. PCB天线无线模组如何布局摆放?
  2. 一帖搞定U盘系统制作及安装苹果mac os引导U盘安装windows7
  3. OpenGL编程指南14:混合半透明Blend
  4. java字段不序列化注解_@Transient注解的使用(不被序列化和作为临时变量存储)...
  5. UVA571 - Jugs(数论)
  6. 好用的shell_Linux系统安全 | Linux中的Shell和Bash
  7. phpStudy配置站点 解决You don't have permission to access / on this server
  8. In Depth和In Action的区别——写在《深入理解C#(第二版)》出版之际
  9. 开课吧课堂:人工智能对金融行业的影响
  10. AssetPostprocessor.OnPreprocessModel
  11. 红帽rhce考试自带补考吗_红帽RHCE认证考试注意事项
  12. 使用Keras-yolov3来识别滑动验证码
  13. 如何开始做股票量化交易?
  14. 直播app系统源码,自定义弹框的简单写法Demo
  15. JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@xxx] will not be managed by Spring
  16. win11如何切换输入法 win11快速切换输入法
  17. ACP知识域四---团队绩效
  18. 怎么使用软件操作将桌面上CAD转换为黑色背景WMF格式?
  19. 蓝桥杯单片机led指示
  20. Guns 第4节 用Guns开发

热门文章

  1. Java 11快多少?
  2. 使用Maven将文件上传和下载到S3
  3. Java 8 –按值对HashMap进行升序和降序排序
  4. idea 不能及时编译_您是否能及时编译?
  5. 使用FlexDeploy对融合中间件应用程序进行自动化软件测试
  6. linux openjdk_OpenJDK作为Linux上的默认Java
  7. 不删除侦听器–使用ListenerHandles
  8. JUnit:使用Java 8和Lambda表达式测试异常
  9. Spring MVC中的验证组
  10. JavaFX中的塔防(3)