Решение к проблеме получило WA (неправильный ответ), затем я изменил один из int
на long long int
и дал AC (принять ) [/ д2]. Раньше я пытался сделать long long int += int * int
, и после того, как исправил его до long long int += long long int * int
. Googling я придумал,
Условия преобразования типов:
Условия Met ---> Конверсия
- Любой операнд имеет тип длинный двойной. ---> Другой операнд преобразуется в тип long double.
- Предыдущее условие не выполнено, и оба операнда имеют тип double. ---> Другой операнд преобразуется в тип double.
- Предварительные условия не выполняются и оба операнда имеют тип float. ---> Другой операнд преобразуется в тип float.
- Предварительные условия не выполняются (ни один из операндов не имеет типов с плавающей запятой). ---> Интегральные аксиомы выполняются в операндах следующим образом: Если любой из операндов имеет тип unsigned long, другой операнд преобразуется в тип unsigned long. Если предыдущее условие не выполнено, и если любой из операндов имеет тип long, а другой типа unsigned int, оба операнда преобразуются в тип unsigned long. Если предыдущие два условия не выполняются, и если один из операндов имеет тип long, то другой операнд преобразуется в тип long. Если предыдущие три условия не выполняются, и если один из операндов имеет тип unsigned int, другой операнд преобразуется в тип unsigned int. Если ни одно из предыдущих условий не выполняется, оба операнда преобразуются в тип int.
Целочисленные типы, меньшие, чем int, продвигаются, когда на них выполняется операция. Если все значения исходного типа могут быть представлены как int, значение меньшего типа преобразуется в int; в противном случае он преобразуется в unsigned int. Целочисленные акции применяются как часть обычных арифметических преобразований к некоторым выражениям аргументов; операнды унарных +, - и ~ операторов; и операнды операторов сдвига.
- Целочисленный ранг конверсии: ни один из двух подписанных целочисленных типов не должен иметь одинаковый ранг, даже если они имеют одинаковое представление. Ранг целочисленного типа со знаком должен быть больше ранга любого знакового целочисленного типа с меньшей точностью. Ранг
long long int
должен быть больше ранга long int
, который должен быть больше ранга int
, который должен быть больше ранга short int
, который должен быть больше ранга signed char
. Ранг любого беззнакового целочисленного типа должен быть равен рану соответствующего знакового целочисленного типа, если таковой имеется. Ранг любого стандартного целочисленного типа должен быть больше ранга любого расширенного целочисленного типа с одинаковой шириной. Ранг char
должен быть равен рангам signed char
и unsigned char
. Ранг любого расширенного целочисленного типа со знаком, связанного с другим расширенным типом со знаком целого типа с той же точностью, определяется реализацией, но по-прежнему подчиняется другим правилам определения целочисленного ранга преобразования. Для всех целых типов T1, T2 и T3, если T1 имеет больший ранг, чем T2, а T2 имеет больший ранг, чем T3, то T1 имеет больший ранг, чем T3. - Обычные арифметические преобразования: если оба операнда имеют один и тот же тип, дальнейшее преобразование не требуется. Если оба операнда имеют один и тот же целочисленный тип (подписанный или без знака), операнд с типом ранга меньшего целочисленного преобразования преобразуется в тип операнда с большим рангом. Если операнд, имеющий целочисленный тип без знака, имеет ранг, больший или равный рангам другого операнда, операнд со знаком целочисленного типа преобразуется в тип операнда с целым числом без знака. Если тип операнда со знаком целочисленного типа может представлять все значения типа операнда с целым типом без знака, операнд с целым типом без знака преобразуется в тип операнда со знаком целочисленного типа. В противном случае оба операнда преобразуются в целочисленный тип без знака, соответствующий типу операнда со знаком целочисленного типа. Конкретные операции могут добавлять или изменять семантику обычных арифметических операций.
задан Antispam Antispam 18 January 2019 в 09:55
поделиться