68 votes

Pourquoi n'y a-t-il pas d'opérateurs || = ou && =?

Nous avons des opérateurs d'affectation équivalents pour tous les opérateurs logiques, les opérateurs Shift, les opérateurs additifs et tous les opérateurs multiplicatifs.

Pourquoi les opérateurs logiques ont-ils été oubliés? Y a-t-il une bonne raison technique pour laquelle c'est difficile?

53voto

Eric Lippert Points 300275

Pourquoi les opérateurs logiques obtenir de côté? Est-il une bonne raison technique pour laquelle il est dur?

Ils n'ont pas. Vous pouvez le faire &= ou |= ou ^= si vous le souhaitez.

bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2

L' || et && des exploitants n'ont pas une forme de composés parce que franchement, ils sont un peu bête. Dans quelles circonstances avez-vous envie de dire

b1 ||= b2;
b1 &&= b2;

tels que la droite n'est pas évalué si la gauche ne change pas? Il semble que quelques personnes pourraient utiliser cette fonctionnalité, alors pourquoi le mettre dans?

Pour plus d'informations sur les opérateurs composés de voir mes graves de l'article ici:

http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx

et le suivi avril-Fous de l'article ici:

http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx

-1voto

Jonno Points 358

Je pense que ce n'est probablement pas conçu. En termes d'analyse du langage, je ne vois pas qu'il serait plus complexe d'implémenter ceci que + = - les deux auraient des correspondances partielles pour les opérateurs existants mais cela a évidemment été traité.

Prograide.com

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.

Powered by:

X