Explicación súper detallada del operador

Clasificación de operadores

Operadores aritméticos Operadores de
desplazamiento Operadores de
bit Operadores de
asignación Operadores unarios
Operadores
relacionales Operadores
lógicos Operadores
condicionales
Expresiones de coma
1. Operadores aritméticos

+    -   *   /   %

(1) % es el carácter de resto, es decir, el resto, los dos operandos deben ser números enteros y el retorno es el resto después de la división. Como
(10 dividido por 3, cociente 3 resto 1)
10/3=1;
10%3=1;
además del operador %, varios otros operadores pueden actuar sobre números enteros y de punto flotante. Para el operador /, la división de enteros se realiza si ambos operandos son enteros. Y siempre que haya números de punto flotante, se realiza la división de punto flotante.

2. Operador de turno (todas las operaciones son complemento)

<< 左移操作符
>> 右移操作符
    
注:移位操作符的操作数必须是整数,移动位数只能是正整数(不能为负数)。
如 3<<12(表示3左移12位)
   3>>12(表示3右移12位)

(1) Desplazamiento a la izquierda (eliminar a la izquierda, completar con 0 a la derecha) Complemento de 3 ( inverso
, el complemento es el mismo )


-3 código original
100000000000000000000000000000011

Complemento de -3 (el bit de signo del código original permanece sin cambios, y el resto está invertido)
1111111111111111111111111111100
Complemento de -3 (complemento de uno + 1)
111111111111 11111111111111111101
-3<<12 (-3 desplazado a la izquierda 120 bits)
10111 101000110
Convertido al código inverso (es decir, -1)
11111111111111111100 111111111111
convertido al código original (el bit de signo permanece sin cambios, el resto se invierte)
10000000000000000011000000000000
El código original es el resultado final

(2) Desplazamiento a la derecha
(2).1 Desplazamiento lógico a la derecha (completar 0 a la izquierda, descartar el extra a la derecha)
como 15>>3

15的原码(反码、补码都一样)
000000000000000000000000000001111
15>>3
00000000000000000000000000001000

Como -15>>3

-15的原码
10000000000000000000000000001111
-15的反码
11111111111111111111111111110000
-15的补码
11111111111111111111111111110001
-15>>3
00011111111111111111111111111110

(2).2 Desplazamiento aritmético a la derecha (llene el bit más alto a la izquierda, descarte a la derecha)
como 8>>3

8的原码
00000000000000000000000000001000
8>>3
00000000000000000000000000000001

Como -16>>3

-16的原码
10000000000000000000000000010000
-16的反码
11111111111111111111111111101111
-16的补码
11111111111111111111111111110000
-16>>3
11111111111111111111111111111110

3. Operadores de bits (se realizan operaciones complementarias)

&   按位与(两个都是1则结果为1,否则为0|   按位或(至少有一个1则结果为1^   按位异或(相同为0,不同为1)
注:他们的操作数必须是整数。

Tome el binario de 8 bits como ejemplo
3 y 5

000000113000001015000000013&5

3|5

000000113000001015000001113|5

3^5

000000113000001015000001103^5

4. Operador de asignación (=)

int a = 10;
int x = 0;
int y = 20; a = x = y+1;//连续赋值

operador de asignación compuesto

+=    如a=a+b  可以写成 a+=b
-=      a=a-b          a-=b;
*=      a=a*b          a*=b;
/=       ...           ...
%=       ...           ...
>>=
<<=
&=
|=
^=
这些运算符道理都一样

5. Operador unario

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符) (类型)       强制类型转换

!La operación inversa lógica
0 se convierte en no-0, no-0 se convierte en 0

例如 a=3,b=0;
  则 !a=0,!b=1(或其他非0数)

Prefijo ++ y prefijo - - (primero ++ o - -, luego operación)

int main()
{
    
    
    int a = 10;
    int x = ++a;
    //先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值。x为11。
    int y = --a;
    //先对a进行自减,然后对使用a,也就是表达式的值是a自减之后的值。y为10;
    return 0;
 }

Postfix ++ y postfix - - (operar primero y luego ++ o - -)

#include <stdio.h>
int main()
{
    
    
    int a = 10;
    int x = a++;
    //先对a先使用,再增加,这样x的值是10;之后a变成11;
    int y = a--;
    //先对a先使用,再自减,这样y的值是11;之后a变成10;
    return 0; 
 }

6. Operadores relacionales

>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等”

7. Operadores Lógicos
&& Lógico Y
|| Lógico O

&& AND lógico: Concatena dos expresiones en una. Ambas expresiones deben ser verdaderas para que la expresión completa sea verdadera
como en

1&&3 --->1
1&&0 --->0

|| OR lógico
Une dos expresiones en una. Una o ambas expresiones deben ser verdaderas para que la expresión completa sea verdadera. Mientras uno de ellos sea verdadero, el otro se vuelve irrelevante
como en

1||1 -->1
1||0 -->1

8. Operador condicional
exp1 ?exp2 : exp3
como encontrar el valor máximo de dos números

if(a>b)
  return a;
 else 
  return b;

reemplazar con expresión condicional

(a>b)?a:b
//判断(a>b)是否成立,如果成立返回a的值,否则返回b的值

9. Expresiones con coma
exp1, exp2, exp3, …expN Las expresiones con
coma son expresiones múltiples separadas por comas.
Expresiones de coma, ejecutadas en orden de izquierda a derecha. El resultado de toda la expresión es el resultado de la última expresión.

int a = 1;
int b = 2;
int c=(a=a*b, a=b+10, a, b=a+1);
     a=1*2=2, a=2+10=12,12,b=12+1=13 
     所以结果为13

Supongo que te gusta

Origin blog.csdn.net/qq_62316056/article/details/124190151
Recomendado
Clasificación