[置顶] 都是类型惹的祸——小心unsigned
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int a = -1;
- unsigned int b = 1;
- if(a > b)
- printf("a > b, a = %d, b = %u\n", a, b);
- else
- printf("a <= b, a = %d, b = %u\n", a, b);
- exit(0);
- }

- #include <stdio.h>
- #include <stdlib.h>
- void show_bytes(unsigned char *start, int len)
- {
- int i = 0;
- for(; i < len; ++i)
- printf(" %.2x", start[i]);
- printf("\n");
- }
- int main()
- {
- int a = -1;
- unsigned int b = 4294967295;
- printf("a = %d, a = %u\n", a, a);
- printf("b = %d, b = %u\n", b, b);
- show_bytes((unsigned char*)&a, sizeof(int));
- show_bytes((unsigned char*)&b, sizeof(unsigned int));
- exit(0);
- }

- float sum_elements(float a[], unsigned length)
- {
- int i = 0;
- float sum = 0;
- for(i = 0; i <= length -1; ++i)
//有bug - sum += a[i];
- return sum;
- }
= -1),-1对应的无符号类型的值为UMax,所以for循环将会循环UMax次,数组也会越界,发生错误。那么如何优化上面的代码呢?其实答案非常简单,你也可以自己想一想,这里就给出答案吧,就是把for循环改为:
- for(i = 0; i < length; ++i)
- int strlonger(char *s1, char *s2)
- {
- return strlen(s1) - strlen(s2) > 0; //有bug
- }
- size_t strlen(const char *s);
== strlen(s2)时返回假,其他情况都返回真。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int strlonger(char *s1, char *s2)
- {
- return strlen(s1) - strlen(s2) > 0;
- }
- int main()
- {
- char s1[] = "abc";
- char s2[] = "cd";
- if(strlonger(s1, s2))
- printf("s1 is longer than s2, s1 = %s, s2 = %s\n", s1, s2);
- else
- printf("s1 is shorter than s2, s1 = %s, s2 = %s\n", s1, s2);
- if(strlonger(s2, s1))
- printf("s2 is longer than s1, s2 = %s, s1 = %s\n", s2, s1);
- else
- printf("s2 is shorter than s1, s2 = %s, s1 = %s\n", s2, s1);
- }

- int strlonger(char *s1, char *s2)
- {
- return strlen(s1) > strlen(s2);
- }
[置顶] 都是类型惹的祸——小心unsigned的更多相关文章
- 都是类型惹的祸——小心unsigned
正如我们所知道的,编程语句都有很多的基本数据类型,如char,inf,float等等,而在C和C++中还有一个特殊的类型就是无符号数,它由unsigned修饰,如unsigned int等.大家有没想 ...
- ie8 background css没有显示?——都是空格惹的祸
ie8 background css没有显示?——都是空格惹的祸
- 都是SCI惹的祸?
都是SCI惹的祸? 过去只知道地质学家需要跋山涉水寻找宝藏,最近同一位海外归来的学者谈起,方知少数其它领域的科研人员,也"跋山涉水",在内地研究机构寻找可以写好文章的研究成果,不管 ...
- 都是iconv惹的祸
今天在做采集的时候发现只取到了网页的部分内容,当时我就郁闷了,之前都用的采集都可以采集到网页的所有内容,但这次死活就取到部分内容.寻找原因才知道原来是iconv惹的祸. 发现问题时,网上搜了搜,才发现 ...
- mysql分页查询按某类型置顶 按某类型置尾 再按优先级排序
近段时间接到一个新需求: 第一优先级:未满的标的顺位高于已满标的顺位.第二优先级:新手标的顺位高于其他标的的顺位. 第三优先级:标的剩余可投金额少的顺位高于标的剩余可投金额多的. 我是直接通过sql语 ...
- Dubbo 高危漏洞!原来都是反序列化惹得祸
前言 这周收到外部合作同事推送的一篇文章,[漏洞通告]Apache Dubbo Provider默认反序列化远程代码执行漏洞(CVE-2020-1948)通告. 按照文章披露的漏洞影响范围,可以说是当 ...
- [置顶] Redis String类型数据常用的16条命令总结
Redis String类型数据常用的16条命令总结 描述:String 类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比 ...
- [置顶]
kubernetes资源类型--ingress
Ingress在K8S1.1之前还没有. 概念 Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端. Ingress是一个允许入 ...
- [置顶]
kubernetes资源类型--PetSets/StatefulSet
PetSet首次在K8S1.4版本中,在1.5更名为StatefulSet.除了改了名字之外,这一API对象并没有太大变化. 注意:以下内容的验证环境为CentOS7.K8S版本1.5.2,并部署Sk ...
随机推荐
- BZOJ4199/UOJ131 [Noi2015]品酒大会
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Ant入门
一.Ant介绍 Ant是Java的生成工具,是Apache的核心项目:直接在apache官网下载即可: Ant类似于Unix中的Make工具,都是用来编译.生成: Ant是跨平台的,而Make不能: ...
- python 矩阵转置transpose
在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path) ...
- 【LABVIEW到C#】2》database的操作(一)之 创建access和创建表单
namespace添加如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- 分享知识-快乐自己:HttpClient 访问 WebService 开放接口
HttpClient: 场景需求如下: 1.项目中需要与一个基于HTTP协议的第三方的接口进行对接 2.项目中需要动态的调用WebService服务(不生成本地源码) 3.项目中需要利用其它网站的相关 ...
- Python — 多线程与多进程
1.多线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位,一个进程可以包含多个线程.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线 ...
- es6语法入门let 和 const 命令
let块级作用域 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b for循环的计数器,就很合适使用let命令(防 ...
- 【Oracle】实现Oracle数据库对象的一键升级
引言 公司内部的项目比较倾向于将业务逻辑放在oracle存储过程中实现,所以每次项目升级都涉及到很多的oracle表,存储过程等数据库对象的升级.然而采取的升级方式是比较"原始&qu ...
- JavaScript--收藏栏添加按钮,放大hdu题目字体
觉得HDOJ的题目字体太小了,一波小操作 在收藏栏添加:添加网页->网址改为: javascript: void((function() { var element = document.get ...
- Project://STARK
数据添加&编辑 删除&分页 搜索框功能 action批量操作 filter多条件过滤 pop_up弹窗