注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

C/C++小知识12——无符号与有符号数的运算  

2011-02-24 15:03:23|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

同事今天遇到了一个小问题,就是做pow(x,y)时,总是报pow“OVERFLOW”,查了半天,找到了原因,原来他的y形式是一个负数乘以一个整数,而那个整数定义是DWORD,为无符号的,我们在查阅资料后发现,一般singed 型数据unsigned型数据进行四则运算,是要转换成unsigned的,但具体到编译器,一般是这样处理。如果在有符号的范围内,则返回值是一个signed,否则是unsigned,这样就出来料了。

我们在面试时经常给你一个非常简单的式子,比如unsigned  int a,int b;请你分析a+b,a*b啥现象,不要轻心,这个东西返回的东西很奇怪的,或者问你(a+b) > 0是真是假,这样我们就回到了开始提出的问题,由于是一个负数乘了一个DWORD,所以返回的是一个无符号的(BC编译器,可能他这儿是无符号的,看具体的编译器),我们加一个有符号的强制转换后,发现正常,说明正好我们提出的猜想是完全正确的。

纸上学来终觉浅,绝知此事要躬行!!!谦虚和谨慎是我们前进的最大动力!!!

  评论这张
 
阅读(902)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017