• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 浅谈防不胜防的unsigned int的运算

浅谈防不胜防的unsigned int的运算

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了unsigned int,unsigned int范围,unsigned int几个字节,unsigned int最大值,unsigned int多少位等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

我很早之前就知道,unsigned int与int运算的时候,int会被转化为unsigned int来进行运算。一直觉得定这条规则的人是极度反人类的,虽说unsigned int可以表示更大的正值,但毕竟我们不太会把unsinged想像成一个负数,而一个负的int数可能在无意间就变成了最大的正数。

所以,我对这个问题很慎重。小心翼翼地,一直没怎么出过错。直到有一天。

第一回合

那是一个阳光明媚的午后,我正惬意地刷leetcode。要遍历vector中除最后一个元素的所有元素。我这样写道:

for(int i=0;i<nums.size()-1;++i)
  bulabula;
</div>

没什么错吧?没错!提交的时候发现程序出现了内存访问错误。

作为一个自信的程序员,我自然想到了编译器出了问题。于是在VS上测试,是没有问题的!Stupid Leetcode!居然说我的代码有问题,我的代码怎么可能有问题?

就在我要放弃这一题的时候,我突然想到了边界条件,于是把nums清空再测试,VS提示内存访问错误。Soryy Leetcode,是在下输了……

在进行一番绞尽脑汁之后,我把目光聚焦在了size_t,查了资料后发现,size_t就是个unsigned类型,恍然大悟……nums.size()-1就等于最大的正数,i与之比较,肯定是符合条件的!OH NO!

第二回合

在经历了上述事情之后,我一般会这么写程序:

for(int i=0;i<(int)nums.size()-1;++i)
  bulabula;
</div>

再也没有出现过问题。每次看到别人还写我之前那样的代码,我都会会意一笑,然后告诉他人的我心得。直到有一天,我看到一个大牛写了这样的代码:

for(int i=nums.size()-1;i>=0;--i)
  bulabula;
</div>

我想我发现了大牛的错误。有了上次的教训,这次我测试了一下边界条件。什么?居然正常运行?

在想了很久之后,我得出以下结论:nums.size()-1的确得到了一个最大的unsigned int,可是把它赋给int的时候,编译器就傻傻地直接把unsigned int赋给了int,于是int就为-1了。大牛毕竟是大牛……

在学知识的道路上总会有羊肠小道,多走一些羊肠小道,我才能知道有没有近道!加油加油!

以上就是小编为大家带来的浅谈防不胜防的unsigned int的运算全部内容了,希望大家多多支持~

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈防不胜防的unsigned int的运算
  • 深入解析unsigned int 和 int
  • 解决不用sizeof求出int大小的方法
  • 求32位机器上unsigned int的最大值及int的最大值的解决方法

相关文章

  • 2017-05-28strncpy与snprintf 的用法比较
  • 2017-05-28C++删除链表中间节点的方法
  • 2017-05-28c++回调之利用sink示例
  • 2017-05-28深入解析C++中的mutable关键字
  • 2017-05-28深入理解C++的动态绑定与静态绑定的应用详解
  • 2017-05-28C++实现简单的HTTP服务器
  • 2017-05-28浅谈C++中的string 类型占几个字节
  • 2017-05-28C++指针数组、数组指针、数组名及二维数组技巧汇总
  • 2017-05-28C语言 数据结构双向链表简单实例
  • 2017-05-28C语言的递归思想实例分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C/C++ 读取16进制文件的方法
    • Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
    • C语言中函数声明与调用问题
    • OLEDB打开Excel文件的实现方法
    • c语言定时器示例分享
    • VC实现的病毒专杀工具完整实例
    • C语言中关于sizeof 和 strlen的区别分析
    • C++中四种加密算法之AES源代码
    • 实例讲解C++编程中lambda表达式的使用
    • C语言system 自动关机函数代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有