Instrukcje warunkowe wewnątrz argumentu „printf”


Czy jest jakaś metoda używania instrukcji warunkowej wewnątrz innych instrukcji, takich jak
printf
?
Jednym ze sposobów jest użycie trójskładnikowego operatora ? : , na przykład:
printf("%d", a < b ? a : b);

Czy istnieje metoda na bardziej złożone warunki?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie ma potrzeby stosowania bardziej złożonych wyrażeń, operator warunkowy jest już wystarczająco zły. Nie ma do tego funkcji językowej. Zamiast tego napisz funkcję.
printf("%d", compare(a,b));// good programming, readable codeprintf("%d", a<b?(x<y?x:y):(x<y?y:x));// bad programming, unreadable mess
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W ogóle nie możesz pasować

operatorzy

w
printf
możesz tylko wstawić

wyrażenia
... Formuje się operator trójskładnikowy

wyrażenie
... Wyrażenie jest w zasadzie drzewem operatorów i operandów, jednak istnieją pewne operatory funky, takie jak operator „,” przecinek lub operator przypisania „=”. Dzięki temu wyrażenia mają skutki uboczne.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Każda instrukcja warunkowa zwraca
1
lub
0
. Te wartości to
int
Więc jeśli wykonasz
printf ("% d", a & > b);
, to albo
1
(true) albo
0
będzie wydrukowane (fałsz).
W swoim przykładzie używasz operatora trójskładnikowego
a & < b? A: b
.
Jeśli warunek jest spełniony,
a
zostanie wydrukowane, w przeciwnym razie
b
.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się