Red de conocimientos turísticos - Información de alquiler - En lenguaje C, ¿cuál es el resultado de int a=5,b; b=++a*--a;b?

En lenguaje C, ¿cuál es el resultado de int a=5,b; b=++a*--a;b?

Respuesta: 25

Como puede ver en el código siguiente, de hecho, las prioridades de ++ y -- son mayores que *. Durante la ejecución real, primero se incrementan de 1 a 6 y luego. se reducen en 1. , es 5, pasado en la operación de multiplicación

Código de prueba

int main()

{

int a=5,b ;b=++a*- -a;

printf("%d\n", b);

}

Código ensamblador

main.NET()

leal("%d/n");

leal("%d/n")

leal 4(%esp), %ecx

andl $-16, %esp

pushl -4(%ecx)

pushl % ebp

movl %esp, %ebp

pushl %ecx

subl $36, %esp

movl $5, -12(% ebp)

addl 1, -12(%ebp)

subl $1, -12(% ebp)

subl $1, -12(% ebp)

movl -12(%ebp), %eax

imull -12(%ebp),

movl %eax, -8(%ebp)

movl -8(%ebp),%eax

movl %eax,4(%esp)

movl $.

movl $.LC0, ( %esp)

call printf

addl $36, %esp

popl %ecx

popl %ebp

leal -4(%ecx), %esp

ret

.size main, .-main

.ident "GCC: (GNU) 4.1 2 20070502 (Red Hat 4.1.2-12)"

.section .note.GNU-stack,"",@progbits