sur les types primaire ils ne font absolument rien de plus en C.
En C++ le probleme est plus compliqué sur les objets, mais c´est exactement la même chose sur les types
primaires, et je le prouve:
mandan:~/test> cat test.cpp
void toto(int c, int b)
{
b = b + c;
}
mandan:~/test> cat test.s
.file "test.cpp"
.text
.align 2
.globl _Z4totoii
.type _Z4totoii, @function
_Z4totoii:
.LFB2:
pushl %ebp
.LCFI0:
movl %esp, %ebp
.LCFI1:
movl 8(%ebp), %edx
leal 12(%ebp), %eax
addl %edx, (%eax)
popl %ebp
ret
.LFE2:
.size _Z4totoii, .-_Z4totoii
.ident "GCC: (GNU) 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)" .section .note.GNU-stack,"",@progbits
mandan:~/test> cat test2.cpp
void toto(int c, int b)
{
b = b + c;
}
mandan:~/test> cat test2.s
.file "test2.cpp"
.text
.align 2
.globl _Z4totoii
.type _Z4totoii, @function
_Z4totoii:
.LFB2:
pushl %ebp
.LCFI0:
movl %esp, %ebp
.LCFI1:
movl 8(%ebp), %edx
leal 12(%ebp), %eax
addl %edx, (%eax)
popl %ebp
ret
.LFE2:
.size _Z4totoii, .-_Z4totoii
.ident "GCC: (GNU) 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)" .section .note.GNU-stack,"",@progbits
Pour info, tu confond l´interpretation syntaxique du langage et le code généré! En effet syntaxiquement b+c est une expression évaluable. mais b+=c est evaluable egalement, la preuve: c = (b += c);