turbo tipos sirve que programing programas para lenguaje ejemplos definicion datos caracteristicas basicos c++ syntax

sirve - tipos de datos en c++ definicion



En el ejemplo de Stroustrup, ¿qué significa el colon en "retorno 1: 2"? (3)

No entiendo un uso particular de dos puntos.

Lo encontré en el libro The C ++ Programming Language de Bjarne Stroustrup, 4ª edición, sección 11.4.4 "Llamada y devolución", página 297:

void g(double y) { [&]{ f(y); } // return type is void auto z1 = [=](int x){ return x+y; } // return type is double auto z2 = [=,y]{ if (y) return 1; else return 2; } // error: body too complicated // for return type deduction auto z3 =[y]() { return 1 : 2; } // return type is int auto z4 = [=,y]()−>int { if (y) return 1; else return 2; } // OK: explicit return type }

Los dos puntos confusos aparecen en la línea 7, en el return 1 : 2 declaración return 1 : 2 . No tengo idea de lo que podría ser. No es una etiqueta ni un operador ternario.

Parece un operador ternario condicional sin el primer miembro (y sin el ? ), Pero en ese caso no entiendo cómo podría funcionar sin una condición.



Me parece un simple error tipográfico. Probablemente debería ser:

auto z3 =[y]() { return y ? 1 : 2; }

Tenga en cuenta que dado que la lambda no toma ningún parámetro, los parens son opcionales. Podrías usar esto en su lugar, si prefieres:

auto z3 =[y] { return y ? 1 : 2; }


return 1 : 2; Es un error de sintaxis, no es un código válido.

Una afirmación correcta sería más como return (y) ? 1 : 2; return (y) ? 1 : 2; en lugar.