Предупреждение перед предварительным просмотром: & ldquo; Арифметическое переполнение: 32-разрядное значение смещается, а затем приводится к 64-разрядному значению. & Rdquo;

Все остальные ответы верны, но только для завершения

Функция объявляется следующим образом:

  return-type function-name(parameter-list,...) { body... }

return-type - тип переменной, возвращаемый функцией. Это не может быть тип массива или тип функции. Если не задано, тогда предполагается int.

имя функции - это имя функции.

parameter-list - список параметров, которые функция разделяет запятыми. Если параметры не заданы, то функция не принимает никаких и должна быть определена с пустым набором скобок или с ключевым словом void. Если переменный тип не находится перед переменной в списке paramater, предполагается int . Массивы и функции не передаются в функции, а автоматически преобразуются в указатели. Если список завершен с помощью многоточия (, ...), то нет заданного количества параметров. Примечание: заголовок stdarg.h может использоваться для доступа к аргументам при использовании многоточия.

И снова ради полноты. Из спецификации C11 6: 11: 6 (страница: 179)

Использование деклараторов функций с пустыми скобками (не деклараторы типа параметра прототипа) является устаревшим особенность.

0
задан PRUTHVIBEN PATEL 8 March 2019 в 11:10
поделиться

1 ответ

Это довольно понятно. Если P имеет какое-либо значение больше 7 (7 * 4 = 28, макс. 31), значение F_MASK_4_BIT << (P * 4) будет переполнено. Потому что F_MASK_4_BIT является целочисленной константой типа int.

Исправьте это, используя соответствующий тип для целочисленной константы:

#define F_MASK_4_BIT 0xFull
0
ответ дан Lundin 8 March 2019 в 11:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: