Вот прототип для printf
:
int printf(const char *format, ...);
Мы можем видеть, что printf
возвращает int
.
Документация указывает, что:
При успешном возврате эти функции возвращают количество напечатанных символов (исключая нулевой байт, использованный для завершения вывода в строки).
Вы спросили, почемувывод "String6".Ну:
printf("String");
Сначала печатается String
, но не печатает символ новой строки.Поскольку String
- это 6 символов, printf
возвращает 6, которые вы сохраняете в k
:
printf("%d",k);
После этого выдается 6
(в той же строке).
Попробуйте запустить эту программу:
#include <stdio.h>
int main(void)
{
int bytes_printed = printf("%s\n", "String");
// 7 = 1 + 6
printf("printf returned: %d\n", bytes_printed);
return 0;
}
Вывод:
String
printf returned: 7