QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6761|回复: 3
打印 上一主题 下一主题

怎么判断int型的变量超过取值范围

[复制链接]
字体大小: 正常 放大
zxhutu        

1

主题

0

听众

17

积分

升级  12.63%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-5-5 21:41 |只看该作者 |正序浏览
|招呼Ta 关注Ta
<>我写了一个这样的函数,想把字符串转化为int型的,代码如下,</P>
) o3 u* b% b( g; O* N  }<>其中的int超出了取值范围的判断好像不太合理,请各位指教!</P>% l; Z* @: o/ u
<>int StringToInt(const char* szStr){
- X4 G. n$ q$ Y9 `/ }! m4 R2 O    int nResult = 0;
. V" V# A1 f( w: j0 l. ^4 E    //int nValue = 0;     ) c+ e' L, H( {' P% y- i4 ~7 }
    const char* szTmp = szStr;/ q3 E2 T$ t$ K0 H( F2 V; O/ o9 a2 A) G
    while (*szTmp){9 G6 ^, ^9 _0 Z6 ?
        if(*szTmp &gt;= 48 &amp;&amp; *szTmp &lt;= 57){  . b# s: ~" U$ l5 U4 v; [
            nValue = *szTmp-48;   
+ f% H, [/ K, c3 m& N; q7 b9 n- m            nResult = nResult*10+nValue;
% p9 l" y* \- _1 a" R) ?        }
: l8 r4 K3 N7 s& L( T1 s" Z        else {& Y: ?+ x2 _5 b  y! c: B
     return -1;4 P- B2 z* g/ N) V8 Q5 g2 H5 a
        }
0 Q7 o- K  n; s        if( nResult &lt; 0 ) return -1;//out of range*****就是这里了!
7 O: L. d! P3 g/ A* T+ a        szTmp++;8 Q; ?$ ?7 }5 l. b  k2 @& X9 r8 N
    }
5 q  |# K) N4 q( z5 N1 F    return nResult;
; E8 Z2 g& ^6 s2 @}1 I$ O% n  v5 ~) @6 N. \5 m
</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
skiller        

0

主题

2

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    <>  #include "math.h"
    7 q3 c% y) _2 R  int i ;$ ?" ]/ k% G6 k, }" Q! _
      int j ;
    . c( L  P9 ]9 {3 d. w; n  j= 1&lt;&lt;(sizeof(int) + 1);% B6 s7 d8 B7 j: Y, b. ]
      i=pow(2,j-1)-1;</P><>上面的i就是32位编译器要用来作判断的值!下面是16位编译器的值!</P><>  #include "math.h"
    9 S( m% N$ B5 f& ^  int i ;  e2 j" H3 |: ^( a+ Y# h5 \# D# Q
      int j ;6 ?% Q; v. x* k  Z* J
      j= 1&lt;&lt;(sizeof(int) + 1)-1;
    3 u) c& a; M  ?  i=pow(2,j-1)-1;</P><>  你可以在程序中用它来作越界判断的门槛!</P>
    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    <>int -2147483648~2147483647</P><>这是32位编译器的int的取值范围,是否可以直接用来判断!</P>
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-15 20:23 , Processed in 0.477366 second(s), 73 queries .

    回顶部