[置顶] 都是类型惹的祸——小心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 ...
随机推荐
- python批量修改文件名称
参考文章:http://www.cnblogs.com/ma6174/archive/2012/05/04/2482378.html 最近遇到一个问题,在网上下载了一批视频课程,需要将每节课的名称标号 ...
- HTML5 画布canvas
SVG的<defs> <symbols> 元素用于预定义一个元素使其能够在SVG图像中重复使用 <svg xmlns="http://www.w3.org/20 ...
- Codeforces Round #200 (Div. 1) BCD
为了锻炼个人能力奋力div1 为了不做原题从200开始 B 两个电线缠在一起了 能不能抓住两头一扯就给扯分开 很明显当len为odd的时候无解 当len为偶数的时候 可以任选一段长度为even的相同字 ...
- 理解collate Chinese_PRC_CI_AS
我们在create table时经常会碰到这样的语句,例如:password nvarchar(10)collate chinese_prc_ci_as null,那它到底是什么意思呢?不妨看看下面: ...
- 维度属性的KeyColumns,NameColumn和ValueColumn
维度的每一个属性都有KeyColumns,NameColumn和ValueColumn 1,如何理解KeyColumns,NameColumn和ValueColumn?对一行记录有不同的标识列,但 ...
- poj3189二分图多重匹配
题意:有一些牛和牛棚(有容量),每头牛对牛棚有喜好程度,要求每头牛都有一个棚子的情况下,找最小的喜好程度之差 题解:题意是真的恶心,wa了好久才发现没读懂,一直以为输入 的是排名,其实是牛棚标号,从1 ...
- 如何关闭 window10 自带的杀毒软件
打开运行,快捷键[win+R],输入[ gpedit.msc],点击确定 在打开的组策略窗口中,依次展开计算机配置>管理模板>Windows组件,选择[windows组件]中的window ...
- Python正则表达式之 - ?: / ?= / ?!
Python正则表达式之 - ?: / ?= / ?! 用圆括号将所有选择项括起来,相邻的选择项之间用|分隔.但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作 ...
- android不同的按钮一起点击崩溃解决
public class ButtonUtils { private static long lastClickTime; public synchronized static boolean isF ...
- Eclipse插件开发_学习_01_Maven+Tycho 构建RCP程序
二.参考资料 1.用Tycho来构建你的RCP程序(一) —— Plugin