关于c语言的算术转换引起的bug
来源:互联网 发布:安卓手机运行windows 编辑:程序博客网 时间:2024/05/19 22:25
当执行算术运算时,如果操作数的类型不同,那么类型会发生改变,数据的类型会朝着精度更高,长度更长的方向改变,例如如果其中一个操作数是double,那么另一个也会转换成double,如果一个是usigned,那么另一个也会转换成unsigned
* test.c * * Created on: 2015年3月27日 * Author: wind */#include <stdio.h>int array[] = {1,2,3,4,5,6,7};#define SIZE (sizeof(array)/sizeof(array[0]))int main(int argc, char **argv){int d = -1;if(d <= SIZE - 2){printf("hello\n");}return 0;}对于上面这段代码,显然不能输出hello,sizeof()的返回类型为unsigned int,那么d的值也会转换成unsigned int,此时d=2^32-1这将是一个非常大的正整数,远远大于5,要解决这个问题,就必须对SIZE进行强制类型转换成signed int,即if(d <= (signed int)SIZE-2)
0 0
- 关于c语言的算术转换引起的bug
- c语言的算术隐士转换
- C语言算术运算中数据类型的自动转换
- C语言的算术运算
- 一个类型转换引起的Bug
- C语言的变量与算术表达式
- C语言的算术运算符
- C语言指针的算术运算
- 二进制算术编码器的C语言实现
- unsigned引起的bug
- typedef引起的bug
- 关于C语言的类型转换问题
- 关于C语言数量类型的转换
- 关于《C语言深度剖析》之编译器的bug问题
- 由一个bug引起的关于list的思考
- 算术表达式的转换
- 算术表达式的转换
- 算术表达式的转换
- 英语口语学习(一)
- C语言的那些秘密之---函数返回局部变量
- linux 驱动调试时在线读写I2C寄存器的方法
- 正则表达式匹配不包含某些字符串的技巧
- 大数据存储技术
- 关于c语言的算术转换引起的bug
- Java Assertion总结
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
- 加速你的Hibernate引擎(下)
- 如何选择摄像头
- MultiLanes: Providing Virtualized Storage for OS-level Virtualization on Many Cores
- css3动画属性--animation(动画)
- 解决bash: mysql: command not found 的方法
- 学习网关协议:CGI、FastCGI、WSGI