Что делает int x;arr [100] значит точно? - PullRequest
0 голосов
/ 13 марта 2012

Мне поручено изменить программу на C на x86 asm, и эта строка меня смущает:

int x; arr[100]

Полная программа:

int max = 100;
int val = 0x7a;
int x, arr[100]; /*I have a feeling that it is in fact a typo, and my compiler was just being nice*/
main(){
  x = 1;/*I just got an email saying this was an error*/
  for (x = 1; x <= max; x++){
    arr[x] = val;
   }
}

Я думаю, что это означает массив, но я не уверен.

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Это массив int. До C99 при определенных обстоятельствах тип мог быть опущен в объявлении, а затем предполагалось int. (Обратите внимание, что вы пропустили ; после объявления вашего массива в вашем примере).

Например:

const x = 10;    // valid in C89, not in C99
auto y = 10;     // valid in C89, not in C99
1 голос
/ 13 марта 2012

В старой школе C переменная и функции по умолчанию набираются как int. Это объясняет как тип arr, так и то, почему main() не указан тип возвращаемого значения.

0 голосов
/ 13 марта 2012

Это выглядит как глючный код:

int max = 100;
int val = 0x7a;
// int x; arr[100]   // Syntax error
int x, arr[100];     // Declare x as a scalar int, arr as an array of 100 ints

main() {
  // x = 1;                        // Unnecessary, as the for loop initializes x
  // for (x = 1; x <= max; x++) {  // Writing to arr[100] is an error
  for (x = 0; x < max; x++) {      // Loop thru indices of arr[]
    arr[x] = val;                  // Set arr[0..99] to 0x7a
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...