QQ登录

只需要一步,快速开始

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

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

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

1

主题

0

听众

17

积分

升级  12.63%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-5-5 21:41 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>我写了一个这样的函数,想把字符串转化为int型的,代码如下,</P>1 [2 C/ ^1 ?2 _: R
<>其中的int超出了取值范围的判断好像不太合理,请各位指教!</P>8 Q# `: J2 V5 N+ ~
<>int StringToInt(const char* szStr){
$ V9 b2 v, w9 Y  x    int nResult = 0;
- D& y6 j1 @) K0 Y  m- R" O$ ]1 X    //int nValue = 0;     
  i/ w$ \+ P$ Q4 y1 _% o5 r    const char* szTmp = szStr;
* d( p# H: m, T- L9 `    while (*szTmp){/ z& K, L' w8 M7 `1 L" _6 i. I
        if(*szTmp &gt;= 48 &amp;&amp; *szTmp &lt;= 57){  
/ `. {8 y1 Q* g- q% P+ E            nValue = *szTmp-48;   " `/ Z1 n+ l. Q/ N& `* v
            nResult = nResult*10+nValue;
$ e4 w1 o9 j3 X5 O% {( t        }4 E4 G( z7 k1 M. K4 ^  I
        else {) w2 I0 U' g2 g$ M
     return -1;
# k& C( x/ u6 u1 F" R0 _& Y        }
' h$ I9 L0 v9 A4 s$ l        if( nResult &lt; 0 ) return -1;//out of range*****就是这里了!, y1 R& M& Q$ _+ {
        szTmp++;) _4 u0 `  e7 J, \
    }7 g- Q# w# K0 N+ P9 F4 g1 i4 k% I
    return nResult;
4 {. P1 z* G/ I0 f) j& k, q2 T}
" Z3 ~: n) r5 h+ ?8 B! G. 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"
    7 i2 u6 ~3 i1 K' E; }# I/ [1 @  int i ;% P5 l( Y0 W' p! J4 ~* j: U' }
      int j ;# x% ^9 v5 X, N; e) P) e4 j1 T
      j= 1&lt;&lt;(sizeof(int) + 1);
    * I& L  r, o1 P3 m  i=pow(2,j-1)-1;</P><>上面的i就是32位编译器要用来作判断的值!下面是16位编译器的值!</P><>  #include "math.h"- c( _/ Y& `% T6 E' Y
      int i ;! E6 o0 D: f& ]; X8 G& T2 y. l, w
      int j ;7 U: _, [1 h3 d1 [; ?. w* o9 e
      j= 1&lt;&lt;(sizeof(int) + 1)-1;! f% ]! M9 N; O2 }6 A, r$ B* O- a- \; S
      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-10-24 02:40 , Processed in 1.096349 second(s), 71 queries .

    回顶部