zoukankan      html  css  js  c++  java
  • 变量在赋值之后如果越界了会怎样?

    看到一个题目:

    unsigned char i,j;

     for(i=0,j=2;i!=j;i+=5,j+=7)
     {
       printf("i=%d , j=%d ",i,j);
     }

    unsigned char范围是0-255,在此范围内一轮循环两个值i与j不可能相等,但是在后面可能会相同,但是比如 i=253,这时候i+5=258>255此时i到底是多少?

    运行后知道:j=250 ,j=1;  

                     j=253,   j=4;

                     j=254,   j=5;

                     i=254,   i=3;

                     i=255,   i=4;

    一目了然了,注意255完了之后有个0.

    稍作修改,把unsigned char 改为char,char范围:-128 ~ 127

    运行结果:

                     j=121,   j=-128;

                     j=-2,     j=5;

                     j=124,   j=-125;

                     j=-6,     j=1;

                     i=125,   i=-126;

                     i=-1,     i=4;

                     i=124,   i=-127;

                     i=-2,      i=3;

    嗯。因为位运算的结果,暂时先记这么多吧

                    

  • 相关阅读:
    某不知名的树形Dp
    HDU-5963 朋友 思维
    CF1292C Xenon's Attack on the Gangs
    Emergency Evacuation 模拟了一下
    NOI2003 逃学的小孩
    UVA11300 Spreading the Wealth 数学
    ACWing 1510 楼梯
    测试代码高亮
    Pollard-rho的质因数分解
    米勒罗宾素数检测(Miller-Rabin)
  • 原文地址:https://www.cnblogs.com/wwjdwy/p/3387399.html
Copyright © 2011-2022 走看看