Que fait le code suivant en C / C ++?
if ( blah(), 5) {
//do something
}
Que fait le code suivant en C / C ++?
if ( blah(), 5) {
//do something
}
L'opérateur virgule est appliqué et la valeur 5 est utilisée pour déterminer le vrai / faux de la condition.
Il va exécuter blah () et obtenir quelque chose en retour (vraisemblablement), puis l'opérateur virgule est employé et 5 sera la seule chose utilisée pour déterminer la valeur vrai / faux de l'expression.
Notez que l'opérateur, pourrait être surchargé pour le type de retour de la fonction blah () (qui n'était pas spécifié), rendant le résultat non évident.
Si l'opérateur de virgule n'est pas surchargé, le code ressemble à ceci:
blah();
if (5) {
// do something
}
Si l'opérateur de la virgule est surchargé, le résultat sera basé sur cette fonction.
#include <iostream>
#include <string>
using namespace std;
string blah()
{
return "blah";
}
bool operator,(const string& key, const int& val) {
return false;
}
int main (int argc, char * const argv[]) {
if (blah(), 5) {
cout << "if block";
} else {
cout << "else block";
}
return 0;
}
(édité pour montrer le scénario de surcharge opérateur par virgule. Merci à David Pierre pour ses commentaires)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.