¿Hay una sintaxis neither A nor B
?Hay un if-else, ¿hay una declaración Ni Nor?
Respuesta
Si bien hay ISN' Para hacerlo, sugiero que eche un vistazo al list of supported logical operators y luego estudie cuidadosamente De Morgan's laws. El conocimiento suficiente en estos dos campos le permitirá escribir cualquier declaración lógica en if-else if sintaxis.
EDIT: Para responder completamente a su pregunta (aunque esto ya se ha hecho en otras respuestas), se podría escribir un ni-ni declaración como esta:
if (!A && !B) { DoStuff(); }
+1 para la ley de De Morgan, algo que todo programador debería saber. –
Exactamente, no necesita más que ('&&', '~') O ('||', '~') para representar cualquier conexión lógica. – AraK
Gracias por eso. Conocía las leyes, pero no sabía que llevaran el nombre de alguien :-) –
No, no lo hay.
Creo que debería echar un vistazo a http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B y centrarse en la parte de "Operadores lógicos".
para codificar "si ni A ni B":
if (!A && !B) { ... } //if (not A) and (not B)
o:
if (!(A || B)) { ... } //if not (A or B)
Ley de AKA De Morgan en la otra respuesta – Potatoswatter
no. Se puede lograr el mismo usando if
conjuntamente con !
(no), &&
(y) y ||
(o)
if (x == 1)
{ // do this }
else if (x == 2)
{ // do this }
else { // do this if it's neither 2 nor 1 }
el último lo demás es lo mismo que:
if (x != 1 && x != 2) { // do something }
Oh ... que querían que el "¿no es" palabra clave?
VB agrega No es palabra clave
(Newswire 19/08/2004)
Microsoft ha anunciado que Visual Basic se añadir el "no es" palabra clave para el idioma . Según una fuente en el equipo de VB.NET "Con VB, queremos que el lenguaje funcione de la manera que usted piensa. Extensos estudios de usabilidad han demostrado demostrándonos la ventaja de añadiendo No es el idioma".
La adición de la palabra clave permitiría tales sintaxis que
If ThisThing Ain't Nothing ThenSegún la fuente "Estamos tratando de mantenerse al día con los avances en el idioma Inglés que, como se sabe, está cambiando casi tan rápido como la tecnología ". El equipo de VB cree que ain't is poised to finally be a fully supported keyword in the English language, y ellos consideran que si no incluyen la palabra clave en esta versión, pueden caer muy por debajo del inglés antes de su próxima posibilidad de actualizar VB. Sin embargo, acaloradamente debatido es lo que "No es" debería equiparar a.En su forma más popular, el por encima de línea de código se traduciría en:
If ThisThing Is Nothing ThenSin embargo, todo el mundo está segundo grado Inglés maestro ha dejado claro que "No es Nada" en realidad significa "¿Es Algo" , ya que es un doble negativo. es decir, el equivelant correcta sería ser
If ThisThing IsNot Nothing ThenMicrosoft no tiene ninguna prisa para correr través de esta decisión, fuentes estatales, "Mira, entre VB.NET Beta 1 y Beta 2 , tuvimos que change the definition of 'true'. No queremos ir al a través de eso otra vez ".
Sin embargo puristas del lenguaje declaran que todo este planteamiento es erróneo, señalando que "no es" es una contracción por "no soy", y diciendo "Si ThisThing No soy nada" es simplemente mala gramática. Mejores alternativas, dicen, incluyen resurecting i'n't, como en "If ThisThing I'n't Nothing". Pero incluso esto puede no ser lo suficientemente lejos estados lingüista Jacques Leblanc, "insisto que la perpetuación de la doble negativo es la causa principal de este problema , pero hasta el momento, nadie está realmente dispuesto a discutir el obvio elefante en la habitación. la verdadera solución sería permitir 'Si ThisItem es algo, entonces.' "
Microsoft también se informó de que experimentar con 'Asif', 'Tal vez', y" Totalmente ". Además, "Catch" probablemente será reemplazado por "Doh!", y "Finally" será reemplazado por "Whatever".
fuente: http://web.archive.org/web/20050308014055/http://ea.3leaf.com/2004/08/vb_adds_aint_ke.html
ROFLMAO, en parte porque es ridículo, y en parte porque hay una ¡pequeña voz diciéndome que podrían hacer esto! "Wordup" es el nuevo "Infierno o Mundo ". –
Cuidado Jeff, eso es peligrosamente cerca de DIVERSIÓN :) –
VB = Vernacular Basic. =) Me recuerda algo: http://en.wikipedia.org/wiki/Shakespeare_(programming_language) –
Aquí van:
class neither_t
{
bool lhv;
neither_t(bool lhv): lhv(lhv) {}
public:
bool nor(bool rhv) const
{
return !lhv && !rhv;
}
friend neither_t neither(bool lhv);
};
neither_t neither(bool lhv)
{
return neither_t(lhv);
}
#include <cstdio>
int main()
{
int x = 3;
if (neither(x == 1).nor(x == 2)) {
puts("OK");
}
}
¡Obtuviste C en mi C++! :PAG – Bill
Sí. El & & y || los operadores en C realizan el control de flujo, y todas las expresiones son enunciados, por lo que & & y || formar declaraciones de control de flujo. Los términos de la expresión se evalúan hasta que se conozca su valor, por lo que & & ejecutará una serie de expresiones verdaderas y || ejecutará una serie de expresiones falsas. Como || (O) continúa mientras sus argumentos sean falsos (NO), se puede llamar una declaración ni-ni.
bool a = fun1(), b = fun2();
a || b || (cerr << "neither A nor B is true" << endl);
!a && !b && (cerr << "De Morgan says neither A nor B is true" << endl);
"Pero," usted dice, "que en realidad no es una sentencia de control de flujo. Sólo afecta control de flujo dentro un comunicado." Feria nuff. El operador throw
es en realidad también una expresión con el tipo void
. Entonces podemos extender este, erm, estilo para cubrir bloques de varias líneas.
try {
a || b || (throw logic_error("neither a nor b is true"), false);
} catch(logic_error &exc) {
cerr << exc.what() << endl;
cerr << "now with added madness!" << endl;
}
espero que eso es lo que quería ...
Rubí tiene algo de este tipo de azúcar sintáctica:
- menos que es el equivalente de si!
- collection.empty? se puede utilizar como el equivalente de ! Collection.any?
¿Quiere decir unless
de perl?
$a = 12;
unless($a >= 0) {
print "a is negative\n";
} elsif ($a == 0) {
print "a is equal to 0\n";
} else {
print "a is positive\n";
}
# it prints: a is positive
Curiosamente no hay else unless
, solamente (el equivalente a) else if
.
- 1. MSBuild.exe no acepta ni/p: DefinineConstants nor/p: PreprocessorDefinitions
- 2. ¿Hay una declaración de goto en Ruby?
- 3. Buscando un ifelse más eficiente()
- 4. ¿Hay una declaración TRACE para win32 C++ básico?
- 5. usando Reduce/do.call con ifelse
- 6. ¿Hay una declaración a anteponer un elemento T a un IEnumerable <T>
- 7. ¿Hay una actividad = un contexto?
- 8. C: XNOR/Exclusive-Nor gate?
- 9. ¿Por qué no hay ni un vistazo? función para vectores transitorios clojure?
- 10. ¿Hay un plugin jQuery poll?
- 11. ¿Hay una necesidad de poner un espacio después de dos puntos en la declaración de CSS?
- 12. ¿No hay nombres de argumento en la declaración de resumen?
- 13. ¿Hay alguna forma de simplificar esta declaración de caso?
- 14. ¿Hay alguna forma de ignorar el error de 'Declaración inalcanzable'?
- 15. Ni Invalidar() ni Refresh() invoca OnPaint()
- 16. ¿Hay un reemplazo para mdbtools?
- 17. Rieles: ¿hay una Engine.root?
- 18. ¿Hay alguna diferencia entre una función con y sin una declaración de devolución?
- 19. ¿Hay una función MAKELONGLONG?
- 20. ¿Hay una instrucción de bloqueo en VB.NET?
- 21. ¿Hay un impulso :: weak_intrusive_pointer?
- 22. Por qué no hay declaración de comparación en este 'If ... Else ...' declaración Javascript
- 23. Cómo obtener un archivo por lotes .bat continúe en la siguiente declaración si hay un error
- 24. ¿Hay un iPod SDK?
- 25. ¿Hay un visor DGML?
- 26. ¿Hay un método CapitalizeFirstLetter?
- 27. ¿Hay un Perl portátil?
- 28. ¿Hay un jQuery EventSource?
- 29. ¿hay un 'git find'?
- 30. ¿Hay un JavaScript equivalente para C# 'params'?
if (! Expression) –
Aunque parece tener sentido en inglés, es difícil decirlo ya que el inglés es un lenguaje tan impreciso. ¿Tiene una definición matemática de la funcionalidad que desea? Si puede definir este "ni" y "no" en términos de verdadero y falso, el resto debería ser trivial. –
Intuitivamente eso se traduciría en 'ni (x) {/ * no ocurre * /} ni (y) {/ * no ocurre * /}' para mí ... Probablemente no sea lo que pretendía. –