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)"?). Но здесь... не вижу смысла. Прошу помощи.


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

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

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

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

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

anonymous
()

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

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

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