第一个循环用作无限循环

时间:2018-03-14 08:12:18

标签: c++

为什么第一个循环用作无限循环? 这里z总是一个正数。#include <iostream> #include <stdio.h> using namespace std; int main() { int t; /// t always a positive number scanf("%d",&t); int z=0; while(z!=t) ///first loop { string s; int r,n; cin>>s>>r>>n; int l=0,i,j,k=0; while(s[l]!='\0') l++; for(i=0;i<r;i++) { l=l*2; char a[l]; for(j=0;j<l/2;j++) { if(s[j]=='1') { a[k]='1'; a[k+1]='0'; } else { a[k]='0'; a[k+1]='1'; } k+=2; } int m=0; while (a[m]!='\0') { s[m]=a[m]; m++; } } cout<<s[n]<<endl; z++; } return 0; } 的值每次迭代都在增加,之后,它将等于t,循环将终止。但是在运行时,循环用作无限循环。

loss_weight

1 个答案:

答案 0 :(得分:1)

我的猜测是,无限循环可能不是外部while(z!=t),而是内部

while (a[m]!='\0')
{
    s[m]=a[m];
    m++;
}

因为您检查了NUL字符,但从未将a[]字符设置为\0

因此,您可能会有缓冲区溢出,最终会导致核心转储。