[置顶] 都是类型惹的祸——小心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根据内嵌的数字将字符串排序(sort by numbers embedded in strings)
import re re_digits = re.compile(r'(\d+)') def embedded_numbers(s): pieces = re_digits.split ...
- 使用iView时报"Parsing error: x-invalid-end-tag"错误的解决方案
一. 问题日志 二. 问题原因iView将标签渲染为原生html标签时,由于这些标签是自闭合的,所以有end标签会报错. 三. 解决方案修改配置文件,忽略该项检查: 根目录下 - .eslintrc. ...
- javascript 时间日期处理相加相减
var d = new Date("2008/04/15"); d.setMonth(d.getMonth() + 1 + 1);//加一个月,同理,可以加一天:getDate() ...
- noi2009变换序列
noi2009变换序列 一.题目 1843 变换序列 2009年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 ...
- 报表研究之PPT篇
PPT是一种说服力,是展示,也是营销. PPT写的好,会有事半功倍的效果. 写好PPT,重要的有以下几点. 1.1页1主题,1行1观点 2.善用图形,图成逻辑 3.微软雅黑最佳,其余字体配搭 4.色同 ...
- java:正则匹配Pattern,Matcher
一.正则匹配Pattern,Mather String s = "aa424fsfsd92lfjw2755097"; Pattern p = Pattern.compile(&qu ...
- Mysql5.7压缩版安装启动不了的问题
从mysql 官网下载了mysql-5.7.12-winx64.zip的文件.按步骤安装: 1.添加环境变量 操作如下: 1)右键单击我的电脑->属性->高级系统设置(高级 ...
- 利用selenium爬取豆瓣电影Top250
这几天在学习selenium,顺便用selenium + python写了一个比较简陋的爬虫,现附上源码,有时间再补充补充: from selenium import webdriver from s ...
- 马拉车——模版+KMP——模版
void Manacher(){ ;t[i];++i,len+=){ s[i<<]='#'; |]=t[i]-'A'+'a'; |]=t[i]; } s[len++]='#'; ,pos= ...
- hdoj-1013-Digital Roots(九余数定理)
题目链接 #include <iostream> using namespace std; int main() { string a; int b; ") { b = ; ;i ...