新手求帮忙看下这段代码的数据溢出问题,没有C币理解下(我是在CodeBlock10.05下运行的)

C语言 码拜 9年前 (2015-05-11) 830次浏览 0个评论

#include<stdio.h>
#include<math.h>
unsigned int Ex_secret[30]={11,4,120,75,170,204,90,59,78,49,//用0~255的数表示8位2进制,一共240位
148,248,190,137,0,9,17,91,174,105,45,124,177,205,57,97,194,155,120,36};
unsigned int K[30];//等式(6)迭代完后的Ki值集合
unsigned int C=0;//初始C的值
long double Q[7];
int i;
long n=262144;//n为图像大小,读取BMP文件时注意进行值传递
void main()
{
    long double Ex_pow(int x, int y);
    for(i=0;i<30;i++)//等式(5)的实现
    {
        C=Ex_secret[i]^(C>>3|C<<5);
    }
    for(i=0;i<30;i++)//等式(6)的实现
    {
        K[i]=Ex_secret[i]^(C>>1|C<<7);
    }
    for(i=0;i<7;i++)
    {
        int j;
        int s=0;
        for(j=0;j<6;j++)
        {
            s=s+Ex_pow(256,j)*K[4*i+j];
        }
        long double W=n+Ex_pow(2,48);
        Q[i]=(n+s)/W;
    }
    double x_u[7][2];
    for(i=0;i<7;i++)
    {
        int j;
        for(j=0;j<2;j++)
        {
            if(j==0)
            x_u[i][j]=Q[i];
            else
            x_u[i][j]=0.5*Q[(i+1)%7];
        }
    }
    //输出产生的(x,u)数对
    for(i=0;i<7;i++)
    {
        int j;
        for(j=0;j<2;j++)
        {
            if(j==0)
            printf(“%f   “,x_u[i][j]);
            else
            printf(“%f\n”,x_u[i][j]);

        }
    }
}

long double Ex_pow(int x, int y)//幂函数
{
    int i;
    int s=1;
    for(i=0;i<y;i++)
    {
        s=s*x;
    }
    return (s);
}

40分
问题是什么,描述一下

新手求帮忙看下这段代码的数据溢出问题,没有C币理解下(我是在CodeBlock10.05下运行的)
这个算法流程的执行过程


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明新手求帮忙看下这段代码的数据溢出问题,没有C币理解下(我是在CodeBlock10.05下运行的)
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!