QQ登录

只需要一步,快速开始

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

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

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

1

主题

0

听众

17

积分

升级  12.63%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-5-5 21:41 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>我写了一个这样的函数,想把字符串转化为int型的,代码如下,</P>
& n8 X) Q8 i4 g$ u$ l+ P3 o9 ]/ H<>其中的int超出了取值范围的判断好像不太合理,请各位指教!</P>* _1 {. a- f0 I3 M) d
<>int StringToInt(const char* szStr){; S9 [- n- @# X! }3 x( J+ H) y' E
    int nResult = 0;+ T5 R9 V6 p5 c% k- X+ R( a
    //int nValue = 0;     
' s2 o3 k0 E9 U& d" k9 _2 O6 ^    const char* szTmp = szStr;( b# y& U' N5 J% p: |
    while (*szTmp){' g' g1 j9 D! t3 a: \8 c+ y
        if(*szTmp &gt;= 48 &amp;&amp; *szTmp &lt;= 57){  
9 ?( ?( k! m5 J4 l" c# c" I            nValue = *szTmp-48;   5 c: V& @" ?: m9 x1 X
            nResult = nResult*10+nValue;" b+ G' I  m* s' f) s
        }' a$ @+ O: y4 c/ n2 c' ]$ u
        else {: B' O# ~% p+ c: F3 p! i
     return -1;; v8 ]5 U8 M. O
        }
6 b$ B0 u! ]0 G  Q; |7 X( I        if( nResult &lt; 0 ) return -1;//out of range*****就是这里了!
* }- ]) ^3 q: T. h5 Q  ?        szTmp++;. o; |4 P3 A/ m  x7 T0 j  V
    }
; e. K4 K0 G4 x8 d% d/ W* @' P& |    return nResult;
) s) r7 K! w4 l2 D}( O% k2 V# c" w& a
</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
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>
    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

    <>  #include "math.h"
    % K4 v8 T/ o/ g, T$ k- c* f& F6 H  int i ;
    5 q7 p& s0 d8 U/ m# W  int j ;0 p+ {% ]) J8 N5 |/ o- Z7 b
      j= 1&lt;&lt;(sizeof(int) + 1);
    # O1 n, o* T- P, y6 G# ^0 n: z# |  i=pow(2,j-1)-1;</P><>上面的i就是32位编译器要用来作判断的值!下面是16位编译器的值!</P><>  #include "math.h"" m2 I2 |% c- D& ~2 f
      int i ;
    , F+ {+ ~3 z4 J9 ?- n, {. A1 d  i  int j ;
    % @! K2 l' I: A9 Q! F( I! l% M& M5 D/ K1 C  j= 1&lt;&lt;(sizeof(int) + 1)-1;
    1 U* u# G8 \4 r3 D$ ~  i=pow(2,j-1)-1;</P><>  你可以在程序中用它来作越界判断的门槛!</P>
    回复

    使用道具 举报

    skiller        

    0

    主题

    2

    听众

    29

    积分

    升级  25.26%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-20 13:38 , Processed in 0.329237 second(s), 72 queries .

    回顶部