가능한 중복 :단항 : C#에서의 단항 동작에 따라 변화 이유는 C/C++
:int x = 2; int y = x + 4 * ++x; // what is y???
Undefined, unspecified and implementation-defined behavior
Undefined Behavior and Sequence Points
Pre & post increment operator behavior in C, C++, Java, & C#
나는이 코드 조각을
내가 컴파일에서 테스트 C/C++ 내가 얻을 것이다 :
// C/C++
y is 15
그러나 C#을를 통해
나는// C#
y is 14
이유를 얻을 수 있습니다?
IL의 일부이다
locals init ([0] int32 x,
[1] int32 y)
IL_0000: nop
IL_0001: ldc.i4.2
IL_0002: stloc.0
IL_0003: ldloc.0
IL_0004: ldc.i4.4
IL_0005: ldloc.0
IL_0006: ldc.i4.1
IL_0007: add
IL_0008: dup
IL_0009: stloc.0
IL_000a: mul
IL_000b: add
IL_000c: stloc.1
IL_000d: ldloca.s y
C 및 C에서
"때문에." 나에게 완벽하게 좋은 대답 인 것 같아. –
@David는 이것을 다루는 속임수 링크를 추가했습니다. :) –
고마워요, @ R.MartinhoFernandes, 저는 의견을 삭제하고 그 질문이 중복임을 동의합니다. –