En lenguaje C, ¿cuál es el resultado de int a=5,b; b=++a*--a;b?
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