[置顶] 都是类型惹的祸——小心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 ...
随机推荐
- Spring中为什么实体类不用注入
要理解为什么不用注入,首先就清楚注入的目的是什么?如果不注入,在程序中要使用某个类对象的方法,则需要去new一个对象.然后我们调用其中的方法,众所周知"程序=算法+数据".不失一般 ...
- How to Delete using INNER JOIN with SQL Server?
https://stackoverflow.com/questions/16481379/how-to-delete-using-inner-join-with-sql-server You need ...
- Javascript的this用法---阮一峰
Javascript的this用法 作者: 阮一峰 日期: 2010年4月30日 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比 ...
- Ceilometer Polling Performance Improvement
Ceilometer的数据采集agent会定期对nova/keystone/neutron/cinder等服务调用其API的获取信息,默认是20秒一次, # Polling interval for ...
- js 实现自动调出键盘
在app中,在页面加载完成之后,给输入框添加一个focus,不能自动调出软键盘,可以用以下方式实现: //触发键盘 $("#content").on("touchstar ...
- 解析Ceph: RBDCache 背后的世界
转自:https://www.ustack.com/blog/ceph-internal-rbdcache/ RBDCache 是Ceph的块存储接口实现库 Librbd 的用来在客户端侧缓存数据的目 ...
- mysql 视图、触发器、事物、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- html5视频video积累
又是好几个月没有写东西,还是太懒散了~必须要教育下自己罗~ 这次做了个播放视频的移动H5,之前没有仔细玩过,好好记录下基本知识,还有遇到的一些坑,方便之后再次遇见后进行解决 一.基本 video标签在 ...
- 关于nginx访问 静态文件 403 的错误
例如 ngixn的配置的静态文件访问 如下: location /static { root /var/app/lxxxx/web; } 1.检查所有的文件有无读权限 chmod 644 -R 2.检 ...
- pdp 的连接方法
<?php $dsn = "mysql:host=127.0.0.1;dbname=blog_edu"; try{ $pdo = new PDO($dsn,'root','' ...