C'est quoi cette fonction

Bonsoir,

J'ai trouvé cette ligne de programme dans un exemple mais je ne trouve pas d'explication sur son fonctionnement

lcd.print(page?F("test1 "):F("test2"))

Je suppose que c'est une impression selon la valeur de "page" de test1 ou test2.
Quelle valeur doit prendre "page"?
A quoi correspond le "F"

hello
page doit être égal à 0 ou 1

teste ce code

void setup() {
  Serial.begin(115200);
byte page=1;
  Serial.print(page?F("test1 "):F("test2"));
page=0;
  Serial.print(page?F("test1 "):F("test0"));
}

void loop() {}

Vous pouvez exploiter les chaînes de caractères avec Serial.print() directement depuis la mémoire Flash où elles restent stockées en passant les chaînes avec F(). Par exemple :

Serial.print(F("Hello World"))

Sinon l’opérateur :? S’appelle « opérateur ternaire », à chercher sur tout bon moteur de recherche

OK, merci

Bien compris pour le 0 ou 1.
Pour le "?" c'est moins clair mais je me doute
Par contre pour le "F", je ne vois pas d'autant plus que je viens d'avoir une erreur de compilation en utilisant ce "F".

l'opérateur ternaire (= en 3 parties) s'écrit comme cela

toto = condition ? expression_si_vrai : expression_si_faux;

c'est comme si vous aviez écrit

if (condition) { toto = expression_si_vrai; } else { toto = expression_si_faux;}

mais on s'en sert pour retourner une valeur

Pour le F() --> lirre la documentation