java: los fundamentos de los operadores ternarios

Introducción

El operador ternario, también conocido como operador condicional, es una parte importante del lenguaje informático. Es el único operador con 3 operandos.
Para la expresión condicional x = (a> b)? C: d , primero calcule la condición (a> b) y luego juzgue. Si el valor de (a> b) es verdadero, calcule el valor de c, x = el valor de c; de lo contrario, calcule el valor de d, x = el valor de d. Una expresión condicional nunca evaluará tanto c como d.

ejemplo

La función java devuelve el valor máximo de a, byc:
no hay un operador ternario:

public static int max(int a, int b, int c) {
    
    
	if(a>=b && a>=c)
		return a;
	else if(b>=a && b>=c)
		return b;
	else
		return c;
}

Utilice el operador ternario:

public static int max(int a, int b, int c) {
    
    
		return (a>=b) ? ((a>=c) ? a : c) : ((b>=c) ? b : c);
	}

Se puede ver fácilmente que los operadores ternarios están anidados entre sí, lo que hace que el código sea mucho más conciso, pero puede haber muchos estudiantes que digan que mi práctica if else también puede lograr la función del operador ternario. Fu en realidad será un poco redundante. No se preocupe, echemos un vistazo al siguiente ejemplo.

Proposito especial

Observe el siguiente tema: Descifrado de anillos de letras (llene los espacios en blanco) Organice
26 letras en inglés en el sentido de las agujas del reloj en un anillo. La clave es un número entero.

Los métodos de cifrado conocidos son los siguientes:

Si la clave es mayor o igual a 0, comience desde la letra de texto sin formato y mueva ∣key∣ en el sentido de las agujas del reloj para obtener la letra de texto cifrado;
si la clave es <0, comience desde la letra de texto sin formato y mueva ∣key∣ en sentido antihorario para obtener el texto cifrado letra.
El siguiente programa introduce texto cifrado y clave, y genera texto sin formato. Complete el contenido correspondiente en el espacio en blanco para completar el procedimiento.

#include <stdio.h>
int main()
{
    
    
    char plain, secret;
    int key;
    scanf(" %c %d", &secret, &key);
    ____________________
    printf("%c\n", plain);
    return 0;
}


Tecla de texto cifrado de formato de entrada (letras minúsculas) (cualquier número entero)

Formato de salida
Texto sin formato (letras minúsculas)

Ejemplo de entrada 1
c 5
Ejemplo de salida 1
x
Ejemplo de entrada 2
y -3
Ejemplo de salida 2
b

Podemos obtener de los requisitos de la pregunta, la respuesta debe ser aproximadamente la siguiente:

plain=secret-key%26;
if(plain<'a') plain+=26;
if(plain>'z') plain-=26; 

Pensé de la misma manera antes. La prueba local también coincidió, pero después de que se envió el código, estaba mal. Después de verificarlo, se encontró que el título era una pregunta de código para completar el espacio en blanco, y solo se proporcionó una línea, y el código que escribí tenía tres OK, el compilador no pudo pasar, lo pensé y pensé en el operador ternario, así que obtuve el siguiente código:

plain = (secret - key % 26 < 'a') ? ((secret - key % 26) + 26) : (((secret - key % 26) > 'z') ? ((secret - key % 26) - 26) : secret - key % 26);

Después de la presentación, un AC, y esta pregunta también es un uso típico del operador ternario.
En general: el operador ternario tiene su forma especial de uso. Para algunos problemas, el uso del operador Miki puede efectivamente lograr un efecto multiplicador con la mitad del esfuerzo. También espero que esta escritura pueda ayudar a los estudiantes.

Supongo que te gusta

Origin blog.csdn.net/qq_19265749/article/details/102985918
Recomendado
Clasificación