LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Си - это буквально синтаксический сахар над ассемблером.

Открываю определение из википедии «это синтаксические возможности, применение которых не влияет на поведение программы».

static int a, b;

int main() {
  int *pa = &a, *pb = &b + 1;
  if (pa == pb) {
    printf("A\n");
  } 
  if ((long)pa == (long)pb) {
    printf("B\n");
  } 
  return 0;
}
$ ./a.out
B
И это не баг оптимизатора, а следование стандарту. Нельзя такое говорить про С, это язык с ограничениями которые позволяют проводить оптимизацию и генерировать низкоуровневый код, но макронабором для ассемблера его считать явно не стоит. Архитектура цели при компиляции влияет на поведение, но «архитектура стандартного С» влияет не меньше.

На их примере ты можешь показать, что никаких строк и бигинтов на самом деле в машине нет

А есть ли комплексные числа, _Decimal32? Ну это так, отступление, на С проще показать низкоуровневые возможности, согласен, можно и код того же CPython открыть.

Я бы вообще включал задания в духе «решить проблему популярного проекта на гитхабе» в качестве курсовой работы для студентов 3-4 курса.

Крайне хорошая идея.

Исправление MOPKOBKA, :

Си - это буквально синтаксический сахар над ассемблером.

Открываю определение из википедии «это синтаксические возможности, применение которых не влияет на поведение программы».

static int a, b;

int main() {
  int *pa = &a, *pb = &b + 1;
  if (pa == pb) {
    printf("A\n");
  } 
  if ((long)pa == (long)pb) {
    printf("B\n");
  } 
  return 0;
}
$ ./a.out
B
И это не баг оптимизатора, а следование стандарту. Нельзя такое говорить про С, это язык с ограничениями которые позволяют проводить оптимизацию и генерировать низкоуровневый код, но макронабором для ассемблера его считать явно не стоит. Архитектура цели при компиляции влияет на поведение, но «архитектура стандартного С» влияет не меньше.

На их примере ты можешь показать, что никаких строк и бигинтов на самом деле в машине нет

А есть ли комплексные числа, _Decimal32?

Я бы вообще включал задания в духе «решить проблему популярного проекта на гитхабе» в качестве курсовой работы для студентов 3-4 курса.

Крайне хорошая идея.

Исправление MOPKOBKA, :

Си - это буквально синтаксический сахар над ассемблером.

Открываю определение из википедии «это синтаксические возможности, применение которых не влияет на поведение программы».

static int a, b;

int main() {
  int *pa = &a, *pb = &b + 1;
  if (pa == pb) {
    printf("A\n");
  } 
  if ((long)pa == (long)pb) {
    printf("B\n");
  } 
  return 0;
}
$ ./a.out
B
И это не баг оптимизатора, а следование стандарту. Нельзя такое говорить про С, это язык с ограничениями которые позволяют проводить оптимизацию и генерировать низкоуровневый код, но макронабором для ассемблера его считать явно не стоит. Архитектура цели при компиляции влияет на поведение, но «архитектура стандарта» влияет не меньше.

На их примере ты можешь показать, что никаких строк и бигинтов на самом деле в машине нет

А есть ли комплексные числа, _Decimal32?

Я бы вообще включал задания в духе «решить проблему популярного проекта на гитхабе» в качестве курсовой работы для студентов 3-4 курса.

Крайне хорошая идея.

Исправление MOPKOBKA, :

Си - это буквально синтаксический сахар над ассемблером.

Открываю определение из википедии «это синтаксические возможности, применение которых не влияет на поведение программы».

static int a, b;

int main() {
  int *pa = &a, *pb = &b + 1;
  if (pa == pb) {
    printf("A\n");
  } 
  if ((long)pa == (long)pb) {
    printf("B\n");
  } 
  return 0;
}
$ ./a.out
B
И это не баг оптимизатора, а следование стандарту.

На их примере ты можешь показать, что никаких строк и бигинтов на самом деле в машине нет

А есть ли комплексные числа, _Decimal32?

Я бы вообще включал задания в духе «решить проблему популярного проекта на гитхабе» в качестве курсовой работы для студентов 3-4 курса.

Крайне хорошая идея.

Исправление MOPKOBKA, :

Си - это буквально синтаксический сахар над ассемблером.

Открываю определение из википедии «это синтаксические возможности, применение которых не влияет на поведение программы».

static int a, b;

int main() {
  int *pa = &a, *pb = &b + 1;
  if (pa == pb) {
    printf("A\n");
  } 
  if ((long)pa == (long)pb) {
    printf("B\n");
  } 
  return 0;
}
$ ./a.out
B
И это не баг оптимизатора, а следование стандарту.

Я бы вообще включал задания в духе «решить проблему популярного проекта на гитхабе» в качестве курсовой работы для студентов 3-4 курса.

Крайне хорошая идея.

Исходная версия MOPKOBKA, :

Си - это буквально синтаксический сахар над ассемблером.

Открываю определение из википедии «это синтаксические возможности, применение которых не влияет на поведение программы».

static int a, b;

int main() {
  int *pa = &a, *pb = &b + 1;
  if (pa == pb) {
    printf("A\n");
  } 
  if ((long)pa == (long)pb) {
    printf("B\n");
  } 
  return 0;
}
$ ./a.out
B
И это не баг оптимизатора, а следование стандарту.

Я бы вообще включал задания в духе «решить проблему популярного проекта на гитхабе» в качестве курсовой работы для студентов 3-4 курса.