#c
#c
Вопрос:
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
int wh=1,i,j;
int sale[5][3];
clrscr();
for(i=1;i<=5;i )
{
for(j=1;j<=3;j )
{
sale[i][j]=0;
}
}
printf("%d",wh);
getch();
}
Комментарии:
1. Не используйте Turbo C. Используйте современный компилятор.
2. почему есть оба
iostream.h
иstdio.h
?3. @phoxis Люди любят гибридные автомобили, почему бы им не любить гибридный код! 😉
4. @jonsca: я хотел бы добавить какой-нибудь сценарий оболочки, пожалуйста, добавьте
#!/bin/bash
затем.
Ответ №1:
Конечно, вам следует отказаться от Turbo C, если это то, что вы используете — get Code::Blocks fromhttp://forums.codeblocks.org.
Ваша ошибка:
for(i=1;i<=5;i )
{
for(j=1;j<=3;j )
{
должно быть:
for(i=0;i<5;i )
{
for(j=0;j<3;j )
{
Массивы в C индексируются, начиная с нуля. Итак, массив:
int a[5];
содержит 5 элементов:
a[0], a[1], a[2], a[3], a[4]
Обратите внимание, что в нем нет элемента a[5]. Любая попытка получить доступ к a[5] (или a[6] и т.д.) приводит к тому, что стандарт C называет «неопределенным поведением» — ваша программа находится в неизвестном состоянии, из которого она никогда не сможет восстановиться, и может делать что угодно.
Ответ №2:
В коде есть ошибки. Массив является int sale[5][3];
. Это означает, что диапазоны индексов охватывают 0 to 4
первое измерение и 0 to 2
второе измерение. Индекс в C начинается с 0
. таким образом, цикл должен быть:
for(i=0;i<5;i )
{
for(j=0;j<3;j )
{
sale[i][j]=0;
}
}
В противном случае в вашем коде вы получаете доступ к некоторой области памяти, к которой вы не должны (за пределами массива.
Хотя это не должно заставить компилятор остановить вас от генерации исполняемого файла.
Ответ №3:
Стандарты говорят, что использование void main() неверно. Некоторые компиляторы выдадут ошибки, если вы попытаетесь это сделать.