L'unico posto che ricordo usando questa sintassi è in COBOL, circa 25 anni fa.
Sospetto che il motivo per cui non è ampiamente supportato è perché causa ambiguità che il compilatore non è in grado di risolvere. Nel tuo caso specifico, non è un problema particolare perché "questo" e "quello" sono stringhe, per le quali l'operatore OR condizionale non ha senso. Ma considerare questo frammento, in un linguaggio come C, in cui il risultato di un condizionale è un valore booleano 0 o 1:
int a = 22;
int b = 99;
int rslt = SomeFunction();
if (rslt == (a || b))
A questo punto il compilatore non può determinare in modo affidabile ciò che si vuole. Avete intenzione questo:
if (rslt == a || rslt == b)
o, hai intenzione:
if ((rslt == 0 && a == 0 && b == 0) || (rslt == 1 && a == 1 && b == 1))
Si potrebbe limitare i tipi per i quali potrebbe essere utilizzato come la sintassi, ma poi si sta accumulando eccezioni sulla parte superiore di quello che idealmente dovrebbe essere una sintassi ortogonale. Questo confonderà gli utenti e complicherà il compilatore.
Inoltre, impone che le espressioni vengano valutate in modo diverso in condizionali che in istruzioni di assegnazione. Anche questo complicherebbe senza dubbio il compilatore.
Potrebbe essere fatto funzionare, ma penso che richiederebbe una nuova sintassi con simboli sovraccaricati, e tutto per un guadagno discutibile.
fonte
2009-03-14 04:43:44
si * può * scrivere che in C o C++ .. . semplicemente non fa quello che vuoi anche tu;). –