Persistenter 2015-04-24 07:10 采纳率: 0%
浏览 1553

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

#include
#include
#include
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 {
C=Ex_secret[i]^(C>>3|C< }
for(i=0;i {
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);
}

  • 写回答

1条回答 默认 最新

  • 不是阿尔伯特 2015-06-17 11:14
    关注
    long double Ex_pow(int x, int y)//幂函数
     {
     int i;
     int s=1;//改成double s = 1.;
     for(i=0;i<y;i++)
     {
     s=s*x;
     }
     return (s);
     }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?