LINUX.ORG.RU

Форсирование целой константы в тип long.


0

0

Итак, есть такая функция:

unsigned tenth_secs(void) { struct timeval tp; struct timezone tzp;

gettimeofday(&tp, &tzp); /* .1 seconds since 1970 almost fills a 32 bit int! So lets subtract off * the time right now */ return ((tp.tv_sec - 331939277) * 10L) + (tp.tv_usec / 100000); }

Вроде бы все понятно - берем текущее время, вычитаем из него немного более десяти лет (это, насколько я понимаю, не важно, т.к. программа далее оперирует разностями значений возвращаемыми этой функцией) т.к. (судя по комментарию) многовастенько это будет даже для беззнакового целого (24 года да еще на десять помноженных), потом добавляем миллисекунды, поделенные на 100000 (т.к. мы и секунды на десять помножили).

Но это все фигня, вы мне объясните зачем писать 10<b>L</b>? В статье "<a hre = "http://www.opennet.ru/docs/RUS/ansi-c/ansi-c-2.html">;Описание языка программирования ANSI C. : Элементы С</a>", это называется "форсировать целую константу в тип long". Я бы понял если бы аргумент у какой-нибудь вызываемой функции был long int и вызов происходл таким образом: "function ((long int) 10)" (кстати, это одно и то же, что и "function (10l)"?). Но здесь... не вижу смысла. Прошу помощи.


Тэги не прошли, форматирование в тексте функции закосячено, но думаю все понятно.

Lestat
() автор топика

Запись "10L" - никакое не форсирование каких-то контекстов, а просто способ (едиственный) записать константу типа long int (а не int).

anonymous
()

прочитал - ничего не понял. чего тебя смущает то? с точки зрения хорошего стиля тут все правильно - все переменные, константы и проч. в выражении одного типа. ну и что из этого?

Vinill ★★
()
Ответ на: комментарий от Vinill

Вариант с "хорошим стилем" мне в голову не пришел. =))))) Все понятно. Спасибо. =))

Lestat
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.