This:
Code:
#include <stdio.h>
int main()
{
int a = 5 -(-6);
printf("%d", a);
return 0;
}
As you can see the piece of code that you are talking about does not go beyond compilation.
Code:
.file "main.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "%d"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
movl $11, %esi
movl $.LC0, %edi
xorl %eax, %eax
call printf
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]"
.section .note.GNU-stack,"",@progbits
As a side-note, the CPU executes what is in the binary without any bias meaning if the binary dictates the process as a 'double minus' it will do a double minus, if the binary dictates the process as an 'addition' it will do an addition.