Jeśli masz pomysł, jak masz zamiar używać X to oczywiście można napisać
int x = printf("text");
przeciwnym razie wartość zwracana funkcji jest po prostu odrzucone, ponieważ nie jest używany.
W większości przypadków programiści nie znajdują użytecznej aplikacji zwracającej wartość printf.
Jednak czasami można go użyć na przykład do drukowania tabel z wyrównanymi kolumnami.
Na przykład
int n = printf("%s", SomeString);
if (n < COLUMN_WIDTH) printf("%*c", COLUMN_WIDTH - n, ' ');
rozważyć to prosty program
#include <stdio.h>
int main(void)
{
const int COLUMN_WIDTH = 20;
int n = printf("%s", "Hello");
if (n < COLUMN_WIDTH) printf("%*c", COLUMN_WIDTH - n, ' ');
printf("%s", "World");
}
Jego wyjście jest
Hello World
Oto kolejny przykład, w którym wartość zwracana printf znajdzie przydatnych aplikacji.
Załóżmy, że trzeba wstawić sekwencję liczb oddzielonych przecinkami jak na przykład
1, 2, 3, 4, 5, 6, 7, 8, 9
Jak wyjście taką sekwencję używając tylko jednej pętli bez umieszczania wypowiedzi drukowania na zewnątrz pętli?
Oto program, który pokazuje, jak można to zrobić na podstawie wartości zwracanej przez funkcję printf. :) Spróbuj.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
size_t n = 0;
printf("Enter the number of elements in the array (greater than 0): ");
scanf("%zu", &n);
if (n == 0) exit(1);
int a[n];
srand((unsigned int)time(NULL));
size_t i;
for (i = 0; i < n; i++) a[ i ] = rand() % n;
i = 0;
do
{
printf("%d", a[ i ]);
} while (++i < n && printf(", ") > 0);
return 0;
}
chodzi o programie
int foo(int x) {
return x;
}
int main() {
foo(10);
}
następnie wywołując funkcję foo
nie ma żadnego wpływu. Nie robi nic, a w rzeczywistości można go usunąć. I nie wszystkie kompilatory wysyłają wiadomość do twojego programu. Wydaje się, że kompilator, którego używasz, ma opcję kompilatora, która wymusza na kompilatorze rozważanie ostrzeżeń takich jak błędy. Twój kompilator chce, abyś zwrócił uwagę, że wywołanie funkcji nie ma żadnego efektu. Możliwe, że popełniłeś błąd logiczny.
Z drugiej strony funkcja wywołania printf ma widoczny efekt.
Możesz zrobić to samo. –
A co byś zrobił z tym numerem? – jonrsharpe
Skompilowałem twój kod, nie otrzymałem błędu ani ostrzeżenia o nieużywanej wartości zwracanej. Jakiego kompilatora używasz i jaki jest błąd? – Barmar