无符号数的注意事项
2016-04-02 14:33
309 查看
看CSAPP中着重强调了这个问题,很容易出错。两个无符号数之间比较不会出现问题,但如果两个无符号数相减,如果前一个数小于后一个数,不会输出有符号的负数,而是输出一个很大的无符号数(就是对应的有符号数转成无符号数),所以进行比较的时候要十分小心,一般两个无符号数比较大小直接用大于小于即可,如果相减后与0比较反而会出错。还要强调,size_t一般指unsigned int ,所以如果用返回size_t的函数时要小心,比如strlen和sizeof。
常见的出错场合:
int main() { unsigned a, b, c,d; a = 150; b = 100; c = b - a; d = a - b; printf("%u\n", c);//输出4294967246 printf("%u\n", d);//正常输出50 return 0; }
常见的出错场合:
int strlonger(char *s, char *t) { return strlen(s) - strlen(t)>0; } int main() { char s[] = "DGFHGG"; char t[] = "asfghgfg"; printf("%d\n", strlonger(s, t));//无论s和t哪个大都输出1 return 0; }
相关文章推荐
- SpringMvc:视图和视图解析器
- Android Studio初次使用问题
- javascript 冒泡排序
- 方法区
- 互联网相关名词,需要掌握的
- stm32的时钟系统
- UVA_196_Spreadsheet
- 更新dict
- java自动装箱拆箱深入剖析
- 神经网络-激活函数-面面观(Activation Function)
- Java基础 集合详述
- 同源策略概念 简述
- Java反射的获取方法浅析
- dict的特点
- jquery ui widget原理解析
- 基本类型、字符串该注意的地方
- HTML学习笔记(十)框架
- 一次安全狗参数配置导致断网的解决过程
- 网络:请求本地服务器做法(socket)
- IOS 方法带可变参数写法及解释