Передача параметров в функцию

kab18
Дата: 16.01.2015 09:57:48
Возможно ли модифицировать приведенную ниже функцию так, чтобы передаваемая переменная i могла иметь произвольный тип данных?
unsigned char MaxMin(i)
{
   i=0;
   do
      i--;
   while(i<0);
   i++;
   printf("Min= %d\n",i);
   i=0;
   do
      i++;
   while(i>0);
   i--;
   printf("Max= %d\n\n",i);
   return 0;
}
Dima T
Дата: 16.01.2015 10:05:20
Про шаблоны почитай
SashaMercury
Дата: 16.01.2015 10:08:00
В языке программирования Си статическая типизация, тип каждого элемента устанавливается во время компиляции, и во время выполнения он меняться не может.
В Си float и int, например, вы не смешаете.

Однако, в языке С++ используется технология обобщенного программирования. Думаю Сообщество расскажет вам более подробно.
SashaMercury
Дата: 16.01.2015 10:24:26
kab18,

а у вас функция то работает ? Почему входные параметры без типа данных ? По моему, в старых версиях компиляторов можно было входной параметр указывать без типа, по умолчанию был int, неужели и современные компиляторы это поддерживают ?
kab18
Дата: 16.01.2015 11:59:37
SashaMercury
kab18,

а у вас функция то работает ? Почему входные параметры без типа данных ? По моему, в старых версиях компиляторов можно было входной параметр указывать без типа, по умолчанию был int, неужели и современные компиляторы это поддерживают ?

У меня билдер. По умолчанию int, но смысл функции был поиск максимального/минимального значения по каждому типу данных. Я понимаю, что есть таблицы но хотелось эксперементально удостовериться. Для меня например непонятно почему тип данных int имеет размер 4 байта при количестве возможных значений 65535. Не понятно чем в билдере int отличается от long int.
+
Картинка с другого сайта.
Dima T
Дата: 16.01.2015 12:24:23
kab18
Для меня например непонятно почему тип данных int имеет размер 4 байта при количестве возможных значений 65535.

Судя по твоей картинке 65535 относится unsigned short

kab18
Не понятно чем в билдере int отличается от long int.

Скорее всего ничем. Наследие прошлого. Когда-то давным-давно int был 16 бит, т.к. процессоры были 16-битные. Почитай
Dima T
Дата: 16.01.2015 12:30:16
Область допустимых значений для знакового целого
-2^(N-1) ... 2^(N-1) - 1

для беззнакового
0 ... 2^N - 1

где N размер переменной в битах, т.е. sizeof(тип) * 8
Anatoly Moskovsky
Дата: 16.01.2015 13:00:08
kab18
Не понятно чем в билдере int отличается от long int

В Винде int==long. Такое соглашение (и в полном соответствии со стандартом).
Но например в Линуксе x64 long больше int.
Dimitry Sibiryakov
Дата: 16.01.2015 13:40:09

kab18
модифицировать приведенную ниже функцию

Приведённую функцию надо не модифицировать, а выкидывать напрочь. Открой для себя
заголовок limits.h и, в частности, определённые там константы максимального/минимального
значения для каждого типа.

Posted via ActualForum NNTP Server 1.5

MasterZiv
Дата: 16.01.2015 14:24:58
SashaMercury
kab18,

а у вас функция то работает ? Почему входные параметры без типа данных ? По моему, в старых версиях компиляторов можно было входной параметр указывать без типа, по умолчанию был int, неужели и современные компиляторы это поддерживают ?


Именно поэтому.