LINUX.ORG.RU

Форматы printf это названия текстовых представлений, а не исходных типов.
%d - decimal
%f - float
%e - exponential

mittorn ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Форматы уже использовались до этого где то еще?

Ты о языке FORTRAN что-нибудь слышал?

ABW ★★★★★
()

За более чем 50 лет существования языка C люди привыкли к этому printf и ради вашей идеи отвыкать не захотят. Изобретите свой язык, его можно назвать C++. Ой, он уже есть. Ну тогда C++++. Язык C первоначально предназначался для очень слабых компьютеров, и по замыслу авторов должен был быть простым для трансляции. Поэтому они не приняли бы предложенное вами не слишком полезное украшение.

Partisan ★★★★
()

printf и так принимает %i, это синоним %d.

anonymous
()

Можно использовтаь макросы типа PRIx32 PRId8 PRIu32 итд. Что то в стиле printf(«Value=%» PRIX32, int32_value);

vromanov ★★
()
Ответ на: комментарий от MOPKOBKA

это более математические названия определяющие представление, а не тип данных как таковой, более того хотели изначально %r - real использовать и кто-то даже использовал, но приняли float, т.к. математиков не устроила приближенная природа представления действительных и поэтому взяли именно float т.к. название говорит за себя - «плавающее»

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 1)
10 марта 2021 г.

для понимании эволюции Си как структурного мобильного ассемблера

красивая реализация подстановки:

from https://minnie.tuhs.org/cgi-bin/utree.pl?file=V2/lib/printf.c


printn(n,b) {
	extern putchar;
	auto a;

	if(a=n/b) /* assignment, not test for equality */
		printn(a, b); /* recursive */
	putchar(n%b + '0');
}

printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9)
	char fmt[];
	{
	extern printn, putchar;
	char s[];
	auto adx[], x, c;

	adx = &x1; /* argument pointer */
loop:
	while((c = *fmt++) != '%') {
		if(c == '\0')
			return;
		putchar(c);
	}
	x = *adx++;
	switch (c = *fmt++) {

	case 'd': /* decimal */
	case 'o': /* octal */
		if(x < 0) {
			x = -x;
			if(x<0) {  	/* is - infinity */
				if(c=='o')
					printf("100000");
				else
					printf("-32768");
				goto loop;
			}
			putchar('-');
		}
		printn(x, c=='o'?8:10);
		goto loop;

	case 'c': /* char */
		putchar(x);
		goto loop;

	case 's': /* string */
		s = x;
		while(c = *s++)
			putchar(c);
		goto loop;
	}
	putchar('%');
	fmt--;
	adx--;
	goto loop;
}
qulinxao3
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.