int main()
{
unsigned int a = 1;
printf("%u\n",a<<(-1));
return 0;
}
Выходной сигнал: 2147483648.
Вот мое предположение и подтверждение: (просто предположение!) [/ g1]
1. «& lt; правый операнд должен быть неподписанным типом int,
, поэтому, во-первых, (int) «-1» будет введен в (unsigned int) «-1». Причина Тип int представляет собой представление с двумя дополнениями, результат будет равен 2 ^ 32-1 (без знака int)
2.Due на номер 2 ^ 32-1 больше, чем цифра максимального смещения, 2 ^ 32 - 1 будет mod 32, что равно 27
. Я также пробовал некоторые другие правильные номера операндов, а результаты ручного вычисления с допущенными правилами будут одинаковыми с каким продуктом моей IDE.
Я пытаюсь найти некоторые поддерживающие официальные документы, ведь можно проверить, правильно ли мое предположение или нет. Может быть, вы можете мне сказать.
В JUnit5 вы можете запускать параметризованные тесты с CSV-источником . Вы можете увидеть пример со встроенными значениями CSV:
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
class PriceCalculatorTest {
PriceCalculator classUnderTest;
@BeforeEach
void setUp() throws Exception {
classUnderTest = new PriceCalculator();
}
@ParameterizedTest
@CsvSource({"0.0, 13", "5.0, 14", "5.0,26", "15.0,27", "15.0,64", "10.0,65"})
void testGetPrice(double expected, int age) {
assertEquals(expected, classUnderTest.getPrice(age), 0.01D);
}
}
Если вы хотите использовать внешний файл данных, для этого есть немного другой синтаксис:
@CsvFileSource(resources = "/two-column.csv", numLinesToSkip = 1)
используя CSV-файл с заголовками в первой строке. Если вы хотите использовать другой формат файла, вам нужно реализовать свой собственный ArgumentsProvider
.