《c陷阱与缺陷》笔记--注意边界值
来源:互联网 发布:java查询ip地址归属地 编辑:程序博客网 时间:2024/06/05 13:35
如果要自己实现一个获取绝对值的函数,应该都没有问题,我这边也自己写了一个:
void myabs(int i){ if(i>=0){ printf("%d\n",i); }else{ printf("%d\n",-i); }}
但是,这个函数真的没有问题吗?如果i的值为-2147483648,会怎样,我们来试下:
#include <stdio.h>void myabs(int i){ if(i>=0){ printf("%d\n",i); }else{ printf("%d\n",-i); }}int main(void){ int a = -2147483648; myabs(a); return 0;}
上面代码编译后出现如下warning:
unsigned.c: In function 'main':
unsigned.c:12:2: warning: this decimal constant is unsigned only in ISO C90 [enabled by default]
执行后的结果为:
-2147483648
额,怎么没有变成正数呢。因为32位系统int的范围为-2147483648 ~ 2147483647,负数比正数可容纳的值大了1,
所以-2147483648取反后就无法保存在int型变量中了。
- 《c陷阱与缺陷》笔记--注意边界值
- C陷阱与缺陷笔记
- C缺陷与陷阱 笔记
- C陷阱与缺陷笔记
- C 陷阱与缺陷 笔记
- 《C陷阱与缺陷》笔记
- C陷阱与缺陷笔记
- C陷阱与缺陷笔记
- C陷阱与缺陷笔记
- C陷阱与缺陷 笔记
- C陷阱与缺陷笔记
- 《C陷阱与缺陷》笔记
- C陷阱与缺陷--笔记
- C陷阱与C缺陷笔记
- 《C陷阱与缺失》边界计算与不对称边界笔记
- c陷阱与缺陷 学习笔记
- C语言缺陷与陷阱(笔记)
- C语言缺陷与陷阱(笔记)
- 奇怪的struts乱码
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- COCOS2D-X 实现图片区域内滚动
- 结合设备安装类GUID和设备接口类GUID获取设备VIDPID
- java 设计模式
- 《c陷阱与缺陷》笔记--注意边界值
- tpc-c 基准测试简介以及程序的安装、使用
- android之写文件到sd卡
- Struts2(0):Struts2框架入门
- ArchLinux终于安装成功
- 我喜欢那个曾经喜欢你(RL)的我
- Python 中全局变量的使用说明
- 第九章子窗口 The Button Class
- VirtualBox下计算集群的建立和网络配置