我有一个2维数组,当我第一次打印数组的数据时,日期打印正确,但另一次数组[last] [i]的数据从i = 0到last - 1.
显然是一个逻辑错误,但我不明白原因,因为我复制并粘贴了for语句.那么......¿C改变数据?
我使用gcc -std=c99但在此之前我尝试使用C++和cout语句.
#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned int numero_jugaderes = 11;
unsigned int numero = numero_jugaderes - 1;
unsigned int p_a[numero];
float p_aya[numero][numero];
for (unsigned int i = 0; i <= numero; i++) {
p_a[i] = i;
}
for (unsigned int i = 0; i <= numero; i++) {
for (unsigned int j = 0; j <= numero; j++) {
p_aya[i][j] = (float) (p_a[i] * p_a[j]) / 100;
printf("%f\t", p_aya[i][j]);
}
puts("");
}
puts("\n");
for (unsigned int i = 0; i <= numero; i++) {
for (unsigned int j = 0; j <= numero; j++) {
printf("%f\t", p_aya[i][j]);
}
puts("");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我看到的问题是,你正在循环使用条件检查
for (unsigned int i = 0; i <= numero; i++)
Run Code Online (Sandbox Code Playgroud)
对于定义为的数组
unsigned int p_a[numero];
Run Code Online (Sandbox Code Playgroud)
你会一个接一个地走.这实际上是无效的内存访问,它调用未定义的行为.
C数组具有基于0的索引,因此有效限制将是
for (unsigned int i = 0; i < numero; i++)
Run Code Online (Sandbox Code Playgroud)