netch80: (bird)
[personal profile] netch80
В питоне:

print '|%10%|' % ()
print '|%-10%|' % ()


выводит:

|         %|
|%         |


То же самое в перле и FreeBSD libc.

Но glibc выводит простой процент без расширения поля (две строки с |%|), gcc ругается, что формат неправильный, причём он в принципе не опознаёт такую возможность:

t.c:5: warning: conversion lacks type at end of format
t.c:5: warning: unknown conversion type character '|' in format
t.c:6: warning: conversion lacks type at end of format
t.c:6: warning: unknown conversion type character '|' in format


а C99 и Posix хором говорят "The complete conversion specification shall be %% ."

Date: 2014-07-11 11:28 am (UTC)
From: [identity profile] gul-kiev.livejournal.com
Получается, они по-разному трактуют и обрабатывают "%%" в строке формата: одни считают его форматным выводом (хоть и без аргументов), а другие - экранированием. Прикольно. Хотя и непонятно, какая разница.
Лично я всегда воспринимал "%%" как экранирование, и так и реализовывал бы (т.е. как в glibc). А теперь уже не удивлюсь, если, например, $$ в make окажется встроенной readonly-переменной со значением "$". Даже проверил - нет, всё-таки ${$} не работает. :)

Profile

netch80: (Default)
netch80

September 2025

S M T W T F S
 123456
78910111213
1415 1617 181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 02:02 am
Powered by Dreamwidth Studios