Red de conocimiento informático - Conocimiento sistemático - ¿Cómo determinar la prioridad de los símbolos en lenguaje C y luego generar el símbolo con mayor prioridad?

¿Cómo determinar la prioridad de los símbolos en lenguaje C y luego generar el símbolo con mayor prioridad?

Prioridad de nivel 1 Unión izquierda () paréntesis [] operador de subíndice -gt; apunta al operador de miembro de estructura

Operador de miembro de estructura

¡Unión derecha de prioridad de nivel 2! Operador lógico NOT ~ Operador bit a bit inverso Operador de incremento

-- Operador de decremento- Operador de signo negativo

(tipo) Operador de conversión de tipo* Operador de puntero amp dirección Operador de dirección amp; operador operador tamaño de longitud

Combinación de prioridad izquierda de nivel 3* Operador de multiplicación/operador de división operador de resto

Combinación de preferencia izquierda de nivel 4 Operador de suma - operador de resta

Combinación de prioridad izquierda de nivel 5 lt; lt; operador de desplazamiento izquierdo gt; operador de desplazamiento derecho

6 combinación de prioridad izquierda lt;, lt;=, gt;, gt;= operadores relacionales

7 Combinación de prioridad izquierda == ¡es igual al operador! = No es igual al operador

8 Combinación de prioridad izquierda y operador

9 Combinación de prioridad izquierda^ Diferencia de posicionamiento o operador

10 Combinación de nivel de prioridad izquierda; | Operador OR posicionado

11 Combinación prioritaria izquierda amp; Operador Y lógico

12 Combinación prioritaria izquierda|| Operador OR lógico

13 ¿Combinación prioritaria derecha? : Operador condicional

14 Combinación de derechos de prioridad = = -= *= /= = amp;= ^= |= lt;lt;= gt;gt; = Todos los operadores de asignación

15 Operador de coma de combinación izquierda de prioridad

Las prioridades disminuyen de mayor a menor, la más alta tiene la prioridad más alta y el operador de coma tiene la prioridad más baja.

De todos los niveles de precedencia, solo tres se combinan de derecha a izquierda: operadores unarios, operadores condicionales y operadores de asignación. Otros operadores se combinan de izquierda a derecha.

El operador con mayor precedencia no es un operador real, sino un tipo especial de operación. () se relaciona con funciones, [] se relaciona con matrices y -gt; y .

Los siguientes son los operadores unarios, todos los operadores unarios tienen la misma precedencia, por lo que tienen la precedencia más alta entre los que considero operadores verdaderos, y como todos van de derecha a izquierda se combinan, por lo que no hay duda de que *p es igual a *(p).

El siguiente es el operador aritmético, *, / y debe tener mayor prioridad que y -.

El operador de turno lo sigue.

Entre los siguientes operadores relacionales, lt; lt; = gt; = es un nivel superior a ==! == Un nivel superior y menos fácil de entender.

Todos los operadores lógicos tienen diferentes prioridades (excepto los operadores unarios! y ~)

El operador de bit lógico "AND" tiene una prioridad mayor que "OR", mientras que "XOR" es en algún punto intermedio.

El segundo es amp amp;, que tiene mayor prioridad que ||.

Los siguientes son el operador condicional, el operador de asignación y el operador de coma.

En lenguaje C, solo hay cuatro operadores que especifican la dirección de operación, son amp amp;, |, operador condicional y operador de asignación.

amp; amp;, | calcula primero el valor de la expresión de la izquierda. Cuando el valor de la expresión de la izquierda puede determinar el valor de toda la expresión, no calculará el valor de. la expresión de la derecha. Por ejemplo, si a = 0 amp; b; amp amp; el bit de la izquierda del operador es 0, la expresión de la derecha b ya no se evalúa.

En operadores condicionales.

Una expresión de asignación, por otro lado, especifica que la expresión de la derecha se evalúa primero, haciendo posible a = b = c = 6;

Precedencia del operador C