public void Foo(double d){
// when called below, d == 2^32-1
...
}
public void Bar(){
uint ui = 1;
Foo(0 - ui);
}
0과 ui 모두 여기에서 서명 된 long으로 승격 될 것으로 예상됩니다.C# 0 (빼기) uint = 부호없는 결과?
이 uint로 캐스팅이 안전하다는 것을 컴파일 타임에 알 수있는 것입니다 리터럴 0사실,
하지만이 모든 단지 잘못된 것 같아요. 최소한 경고를 발행해야합니다.
감사합니다.
언어 사양이 이렇게 모호한 경우가 있습니까?
이 질문은 Jon Skeet을 기다립니다. –
오랫동안 :-) –