Как компилятор отличает переменные,операторы и функции? Все ли компиляторы их отличают?
Сдавал учителю эту программу и он задал мне такие вопросы.Эта программа вычисления нормы вектора из n компонентов. Не могу понять к этой ли программе эти вопросы или просто абстрактно заданы.
#include <stdio.h>
#include <math.h>
#define N 100000
double norm2(double a[],int n)
{
int i=0; double summ=0,max,x;
for(i=0;i<n;i++)
scanf("%le",&a[i]);
max=fabs(a[0]);
for( i = 1; i < n; i++)
if (max < fabs(a[i])) max = fabs(a[i]);
for( i = 0; i < n; i++)
{
x = a[i]/max;
summ += x*x;
}
return max*sqrt(summ);
return 0;
}
double norm2(double a[],int n);
int main(void)
{
double a[N]; int n;
scanf("%d",&n);
printf("Norma =%le",norm2(a,n));
return 0;
}
Ответы (1 шт):
Автор решения: Stan
→ Ссылка
Есть известные переменные/функции, есть не извесные. Обьявление функции и обьявление переменной (определение) имеет конкретную форму записи, по которой переменая/функция становится известной компилятору, в зависимости от формы записи он отличает переменную от функции (по наличию скобок например), при этом компилятор запоминает её имя. Когда уже известна - то он их отличает по имени.