C - 变量未初始化就被使用
C - The variable is being used without being initialized
我是 C/C++
编程语言的新手。我想使用 C programming language
制作简单的 Conway's Game of Life。
我的代码 看起来像这样:
#include "stdafx.h"
// Define some constants
const int DIM = 10;
int board[DIM][DIM];
int checkNeighbours(int x, int y) {
int left, right, top, bottom = 0;
int sum;
// Check neighbour cells
if (board[x - 1][y]) { left = 1; }
if (board[x + 1][y]) { right = 1; }
if (board[x][y - 1]) { top = 1; }
if (board[x][y + 1]) { bottom = 1; }
sum = left + right + top + bottom;
return sum;
}
// Build a board
void buildBoard() {
int i, j, neighbour_count;
for (i = 0; i < DIM; i++) {
for (j = 0; j < DIM; j++){
neighbour_count = checkNeighbours(i, j);
// Underpopulation
if (neighbour_count < 2) { board[i][j] = 0; }
// Lives if nc is 2 or 3
// Overpopulation
if (neighbour_count > 3) {
board[i][j] = 0;
}
// Revive
if (neighbour_count == 3) {
board[i][j] = 1;
}
}
}
// Predefined board cells
board[1][2] = 1;
board[1][3] = 1;
board[2][2] = 1;
}
void drawBoard() {
int i, j;
for (i = 0; i < DIM; i++) {
for (j = 0; j < DIM; j++) {
char figure= (board[i][j]) ? 'A' : '_';
printf("%c", figure);
}
printf("\n");
}
}
int main()
{
buildBoard();
drawBoard();
getchar();
return 0;
}
错误 我得到:
Run-Time Check Failure #3 - The variable 'left' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'right' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'top' is being used without being initialized.
我该如何解决这个问题,因为我已经初始化了这些变量。
int left, right, top, bottom = 0;
仅初始化最后一个变量。更好:
int left = 0 , right = 0, top = 0, bottom = 0;
或
int left, right, top, bottom;
left = right = top = bottom = 0;
相同口味:
char* a, b, c, d;
仅将 a
声明为 char*
指针,其余 b
、c
和 d
为 char
。
我是 C/C++
编程语言的新手。我想使用 C programming language
制作简单的 Conway's Game of Life。
我的代码 看起来像这样:
#include "stdafx.h"
// Define some constants
const int DIM = 10;
int board[DIM][DIM];
int checkNeighbours(int x, int y) {
int left, right, top, bottom = 0;
int sum;
// Check neighbour cells
if (board[x - 1][y]) { left = 1; }
if (board[x + 1][y]) { right = 1; }
if (board[x][y - 1]) { top = 1; }
if (board[x][y + 1]) { bottom = 1; }
sum = left + right + top + bottom;
return sum;
}
// Build a board
void buildBoard() {
int i, j, neighbour_count;
for (i = 0; i < DIM; i++) {
for (j = 0; j < DIM; j++){
neighbour_count = checkNeighbours(i, j);
// Underpopulation
if (neighbour_count < 2) { board[i][j] = 0; }
// Lives if nc is 2 or 3
// Overpopulation
if (neighbour_count > 3) {
board[i][j] = 0;
}
// Revive
if (neighbour_count == 3) {
board[i][j] = 1;
}
}
}
// Predefined board cells
board[1][2] = 1;
board[1][3] = 1;
board[2][2] = 1;
}
void drawBoard() {
int i, j;
for (i = 0; i < DIM; i++) {
for (j = 0; j < DIM; j++) {
char figure= (board[i][j]) ? 'A' : '_';
printf("%c", figure);
}
printf("\n");
}
}
int main()
{
buildBoard();
drawBoard();
getchar();
return 0;
}
错误 我得到:
Run-Time Check Failure #3 - The variable 'left' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'right' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'top' is being used without being initialized.
我该如何解决这个问题,因为我已经初始化了这些变量。
int left, right, top, bottom = 0;
仅初始化最后一个变量。更好:
int left = 0 , right = 0, top = 0, bottom = 0;
或
int left, right, top, bottom;
left = right = top = bottom = 0;
相同口味:
char* a, b, c, d;
仅将 a
声明为 char*
指针,其余 b
、c
和 d
为 char
。