一起talk C栗子吧(第三十四回:C语言实例--巧用溢出计算最值)
2015-08-10 20:46
344 查看
各位看官们,大家好,上一回中咱们说的是巧用移位的例子,这一回咱们说的例子是:巧用溢出计算最值。
闲话休提,言归正转。让我们一起talk C栗子吧!
大家都知道,程序中的变量都有一个取值范围,这个范围也计算机和编译器都有关系。我们举个实际的例
子进行说明:在32位的计算机上,如果使用4个字节存储int类型的变量也就是说使用了32位的存储空间。
这时int类型变量的取值范围是:负2的32次方到正2的32次方-1,具体的数值是-2147483648到2147483647。
如果把不在这个范围内的数值赋值给int类型的变量,那么就会发生溢出。这也是我们在写程序的时候需
要注意的地方,不然程序中发生了溢出就会导致错误的结果。不过溢出有个特点:最大值加一就会因为溢
出变成最小值;反之,最小值减一就会因为溢出变成最大值。我们可以巧妙地利用溢出的这个特点,来求
各种类型变量的最值。
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。在代码中我
们计算的是int类型变量的最值。大家可以自己扩展,计算其它类型变量的最值。
我们当前的编程环境是这样的:计算机是X86结构,操作系统为32位的Linux Mint系统,编译器为GCC,
版本是4.8.2.在这样的编程环境下,使用4个字节存储int类型的变量,所以得到的结果如下:
the min value of int is:-2147483648
the max value of int is:2147483647
如果大家的编程环境和我的不一样,可能会得到不同的运算结果。不过有一点是可以肯定的,如果使用4个
字节存储int类型的变量,那么不论在哪种环境下,都和上面的结果一样。
各位看官,关于巧用溢出计算最值的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
闲话休提,言归正转。让我们一起talk C栗子吧!
大家都知道,程序中的变量都有一个取值范围,这个范围也计算机和编译器都有关系。我们举个实际的例
子进行说明:在32位的计算机上,如果使用4个字节存储int类型的变量也就是说使用了32位的存储空间。
这时int类型变量的取值范围是:负2的32次方到正2的32次方-1,具体的数值是-2147483648到2147483647。
如果把不在这个范围内的数值赋值给int类型的变量,那么就会发生溢出。这也是我们在写程序的时候需
要注意的地方,不然程序中发生了溢出就会导致错误的结果。不过溢出有个特点:最大值加一就会因为溢
出变成最小值;反之,最小值减一就会因为溢出变成最大值。我们可以巧妙地利用溢出的这个特点,来求
各种类型变量的最值。
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。在代码中我
们计算的是int类型变量的最值。大家可以自己扩展,计算其它类型变量的最值。
我们当前的编程环境是这样的:计算机是X86结构,操作系统为32位的Linux Mint系统,编译器为GCC,
版本是4.8.2.在这样的编程环境下,使用4个字节存储int类型的变量,所以得到的结果如下:
the min value of int is:-2147483648
the max value of int is:2147483647
如果大家的编程环境和我的不一样,可能会得到不同的运算结果。不过有一点是可以肯定的,如果使用4个
字节存储int类型的变量,那么不论在哪种环境下,都和上面的结果一样。
各位看官,关于巧用溢出计算最值的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
相关文章推荐
- C/C++ static使用方法注意
- JSON for C++ 介绍1
- C语言-FunctionPointer
- c与c++中struct区别
- C语言-DynamicMemory
- C++标准程序库笔记(2)
- [c语言]冒泡排序-------对折判断法
- [c语言]冒泡排序升级版------选择排序简单版
- C语言-Pointer(high)AndMacro
- C语言 sscanf,sprintf函数 使用总结
- C语言-Pointer
- C语言结构体的字节对齐实例【C语言笔试题】
- C语言-Struct
- C语言第一天
- C语言-Function
- C语言-Array(High)
- C语言-Array
- C语言-Loop
- C++学习笔记之erase
- 一道面试题细说C++类型转换