Мне интересно, как работают Printf и я стараюсь много трюков, как:Поведение Printf с использованием длины subspecifier со строкой
printf("Test 1: %hs\n", "hi");
printf("Test 2: %hhs\n", "hi");
printf("Test 3: %ls\n", "hi");
printf("Test 4: %lls\n", "hi");
printf("Test 5: %js\n", "hi");
printf("Test 6: %zs\n", "hi");
printf("Test 7: %ts", "hi");
Я использую Printf с s
спецификатора и все длины модификатором (обычно используется с численный speficier (как d/i/u/o ...
) и я получаю странный вывод:
Test 1: hi
Test 2: hi
Test 3: Test 4: Test 5: Test 6: hi
Test 7: hi
это, кажется, что обычные l/ll/j
модификаторов длины делают PRINTF ошибку и перестать работать (он не печатает \n
, но со всем другим модификатором длиной s, похоже, игнорирует модификатор длины и работает как обычное использование).
Почему это следует за этим поведением?
* «... не поддерживает ни один из модификаторов длины ...» * - не '% ls' означает, широкий строка? – jww
"** ... вы использовали для аргументов, которые вы передаете. **". не означает, что% ls означает широкую строку? »- Да. – usr