震惊! 为什么加上调试的printf和不加, 结果居然不一样!!
查看原帖
震惊! 为什么加上调试的printf和不加, 结果居然不一样!!
251011
Tokubara楼主2020/9/17 21:41
#include <cstring>
#include <cmath>
#include <cctype>
#include <cstdio>
#include <iostream>
#define MAX 39
using namespace std;

int a[MAX][MAX];
void fill(int n) {
  int last_r=0,last_c=(n-1)>>1;
  a[last_r][last_c]=1;
  for(int i = 2; i <= n*n; i++) {
    if(last_r==0&&last_c!=n-1) {
      last_r=n-1;++last_c;
    } else if(last_c==n-1&&last_r!=0) {
      --last_r;last_c=0;
    } else if(last_r==0&&last_c==n-1) {
      ++last_r;
    } else if(a[last_r-1][last_c-1]>0) {
      ++last_r;
    } else {
      --last_r;++last_c;
    }
    printf("r=%d,c=%d\n", last_r, last_c);
    a[last_r][last_c]=i;
  }
}

int main() {
  int n  = 3;
  fill(n);
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++) {
      printf("%d%s",a[i][j], (j==n-1)?"\n":" ");
    }
  }
}

fill的倒数第2条语句, 注释和不注释printf的结果竟然不一样! 为什么?

2020/9/17 21:41
加载中...