El tercer día de aprendizaje del lenguaje C: operadores relacionales y operadores lógicos

1. Operadores relacionales

        Las expresiones utilizadas para la comparación en lenguaje C se denominan "expresiones relacionales", los operadores utilizados en ellas se denominan (expresiones relacionales) y son "operadores relacionales" (operadores relacionales), principalmente los siguientes seis.

  • > mayor que el operador

  • < operador menor que

  • >= operador mayor o igual

  • <= operador menor o igual

  • == operador igual

  • != operador de desigualdad

        Aquí hay ejemplos:

a > b;

a < b;

a >= b;

a <= b;

a == b;

a != b;

        Las expresiones relacionales suelen devolver 0 o 1, lo que indica verdadero o falso.

        En lenguaje C, 0 representa falso y todos los valores distintos de cero representan verdadero. Por ejemplo, 20 > 12 devuelve 1, 12 > 20 devuelve 0

        Las expresiones relacionales se utilizan a menudo en estructuras if o while. Por ejemplo:

if (i == 3)
{
    printf("i is 3.");
}

       Nota: El operador de igualdad == y el operador de asignación = son dos operadores diferentes, así que no los confunda. A veces, puede escribir accidentalmente el siguiente código: puede ejecutarse, pero es fácil producir resultados inesperados.

if (i = 3)
{....}

        En el ejemplo anterior, la intención original es i == 3, pero accidentalmente se escribe como i = 3. Esta fórmula significa asignar un valor de 3 a la variable i, y su valor de retorno es 3, por lo que el juicio if siempre es verdadero.
Para evitar este tipo de error, a algunos programadores les gusta escribir variables en el lado derecho del signo igual.

if (3 == x)
{...}

        Si == se escribe erróneamente como =, el compilador informará un error. Aviso.

        Hay otro error que se debe evitar: no se deben utilizar varios operadores relacionales juntos.

        ejemplo:

        yo < j < k

        En el ejemplo anterior, se utilizan dos operadores menos que seguidos. Esta es una expresión legal y no informará un error, pero generalmente no logra el resultado deseado, es decir, no garantiza que el valor de la variable j esté entre i y k. Debido a que los operadores relacionales se evalúan de izquierda a derecha, en realidad se ejecuta la siguiente expresión.

(yo < j ) < k 

        En la fórmula anterior, i < j devuelve o 1, por lo que, en última instancia, o 1 se compara con la variable. Si desea determinar si el valor de la variable j está entre i y k, debe utilizar el siguiente método de escritura.

yo < j && j < k

        Ejemplo: ingrese una edad, si la edad está entre 18 y 36 años, generará juventud        

#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);

	if (18 <= age <= 36)
	{
		printf("青年");
	}

	return 0;
}

        Cuando se ingresa 10, también es un joven, como se muestra en la imagen:

        Esto se debe a que primero comparamos 18 con los 10 almacenados en edad. La expresión 18<=10 es falsa y el resultado de 18<=edad es 0. Luego comparamos 0 con 36. 0<=36 es verdadero, así que imprima Juventud, por lo que incluso cuando la edad es 10 años, se puede imprimir la juventud. Hay un problema lógico: ¿cómo debería escribirse este código? 

#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);

	if (age <= 18 && age <= 36)
	{
		printf("青年");
	}

	return 0;
}

2. Operadores lógicos

        Los operadores lógicos proporcionan funciones de juicio lógico y se utilizan para construir expresiones más complejas. Existen principalmente tres operadores:

  • ( ! ): Operador de negación lógica (cambia el valor verdadero o falso de una sola expresión)

  • (&&): operador AND, que significa AND (las expresiones en ambos lados son verdaderas, entonces es verdadera, de lo contrario es falsa)

  • ( || ): operador OR, que significa o (si al menos una expresión en ambos lados es verdadera, es verdadera; de lo contrario, es falsa)

            

 

         Nota: En lenguaje C, distinto de 0 significa verdadero y 0 significa falso.

        2.1 Operador de negación lógica

                Por ejemplo, tenemos una variable llamada bandera, si bandera es falsa y queremos hacer algo, podemos escribir el código así:

if(!flag)
{
  printf("do study");  
}

                Si la bandera es verdadera, !flag es falsa. Si la bandera es falsa, !flag es verdadera. Entonces, el significado del código anterior es que si la bandera es falsa, ejecute el código en la declaración if.

        2.2.Y operador

                && es el operador AND, que también significa AND. && es un operador binario y el método utilizado es a&&b. Cuando las expresiones en ambos lados de && son verdaderas, toda la expresión es verdadera. Siempre que una de ellas sea falsa, entonces toda la expresión es falsa.
Por ejemplo: si decimos que el mes es de marzo a mayo, que es primavera, ¿cómo usamos el código para reflejarlo?

#include <stdio.h>

int month = 0;

scanf("%d", &month);

if(month >= 3 && month <= 5)
{
    printf("春季\n");
}

        El significado aquí expresado es que el mes debe ser mayor o igual a 3 y menor o igual a 5, y debe cumplirse al mismo tiempo.

        2.3.O operador

               || es el operador OR, lo que significa o. (||) también es un operador binario. El método utilizado es (a || b). Siempre que una de las expresiones de ambos lados sea verdadera, toda la expresión es verdadera . , es falso sólo cuando las expresiones de ambos lados son falsas.

Por ejemplo: decimos que el mes del año es diciembre, enero o febrero es invierno, entonces, ¿cómo usamos el código para reflejarlo?

#include <stdio.h>

int month = 0;

scanf("%d", &mont);

if(month == 12 || month == 1 || month == 2)
{
    printf("冬季\n");
}

         Practica usando años bisiestos:

                Ingrese un año, año, para determinar si el año es bisiesto.

                1. Un año bisiesto es divisible por 4 y no divisible por 100.

                2. Si es divisible por 400, es año bisiesto.

#include <stdio.h>

int main()
{
    int year = 0;

    scanf("%d", &year);


    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    {
        printf("%d是闰年!", year);
    }

    return 0;
}

        resultado de la operación:

Supongo que te gusta

Origin blog.csdn.net/m0_58724783/article/details/132101941
Recomendado
Clasificación