엄밀하게 말하면, A == 100 ? B : C = 200은 ISO C에서도(ISO/IEC 9899:1999 section 6.5.16) ISO C++에서도(ISO/IEC 14882:1998 section 5.17) 아예 파싱이 되지 않아야 옳습니다. 문법을 잘 살펴 보시면 알 수 있듯 =의 왼쪽에는 괄호 없이 삼항 연산자 수식이 나타날 수 없습니다. 비주얼 C++의 동작은 아마도 확장인 것 같습니다.
한 가지 흥미로운 것은 ISO C에서는 a || b = c가 파싱이 되지 않는 반면(즉, = 왼쪽에는 단항연산자 수식만 올 수 있습니다) ISO C++에서는 a || b = c가 (a || b) = c로 파싱이 된다는 것입니다(즉, 삼항 연산자를 뺀 모든 수식이 문법상으로는 올 수 있습니다). 후자는 operator||를 재정의해서 비상수 레퍼런스를 반환하게 하면 컴파일도 제대로 될 거에요.