LINUX.ORG.RU

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

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

Больше не может, но может быть равно. И если равно, то результат short*short будет типа short. Который хоть и то же самое что int, но формально всё-таки другой тип. На что это может повлиять я не знаю. Может быть, ни на что. Если бы был автоматический вывод типов, то можно было бы сделать такое:

void f(short a, short b) {
  auto c = a*b;
  int *d;
  d = &c;
}

И на 16-битной платформе оно выдаст как минимум варнинг о несоответствии типа указателя, поскольку c будет типа short, а типы int* и short* - это разные типы, несмотря на полностью идентичное внутреннее устройство.

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

Больше не может, но может быть равно. И если равно, то результат short*short будет типа short. Который хоть и то же самое что int, но формально всё-таки другой тип. На что это может повлиять я не знаю. Может быть, ни на что. Если бы был автоматический вывод типов, то можно было бы сделать такое:

void f(short a, short b) {
  auto c = a*b;
  int *d;
  d = &c;
}

И на 16-битной платформе оно выдаст как минимум варнинг о несоответствии типа указателя, поскольку c будет типа short, а типы int* и short* - это разные типы, несмотря на полностью идентичное внутреннее устройство.

В С++ есть вывод типов кстати и можно было бы там проверить, если бы современные компиляторы поддерживали 16-битный режим. Хотя я не знаю точно, там могут и отличаться арифметические правила вывода типов.

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

Больше не может, но может быть равно. И если равно, то результат short*short будет типа short. Который хоть и то же самое что int, но формально всё-таки другой тип. На что это может повлиять я не знаю. Может быть, ни на что. Если бы был автоматический вывод типов, то можно было бы сделать такое:

void f(short a, short b) {
  auto c = a*b;
  int *d;
  d = &c;
}

И на 16-битной платформе оно выдаст как минимум варнинг о несоответствии типа указателя, поскольку c будет типа short, а типы int* и short* - это разные типы, несмотря на полностью идентичное внутреннее устройство.

В С++ есть вывод типов кстати и можно было бы там проверить, если бы современные компиляторы поддерживали 16-битный режим.

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

Больше не может, но может быть равно. И если равно, то результат short*short будет типа short. Который хоть и то же самое что int, но формально всё-таки другой тип. На что это может повлиять я не знаю. Может быть, ни на что. Если бы был автоматический вывод типов, то можно было бы сделать такое:

void f(short a, short b) {
  auto c = a*b;
  int *d;
  d = &c;
}

И на 16-битной платформе оно выдаст как минимум варнинг о несоответствии типа указателя, поскольку c будет типа short, а типы int* и short* - это разные типы, несмотря на полностью идентичное внутреннее устройство.