a) 숫자 100은 int 리터럴이고 컴파일러에서 암시 적 변환을 허용하지 않으므로 다음 할당에서 오류가 발생하지 않아야합니다.리터럴 및 암시 적 변환의 변환
byte b = 100;
b)는 컴파일러가 INT 문자에 입력 바이트에서 암시 적 축소 변환에 대해 불평하지 않는 경우, 이유는 이중 에서 암시 적 축소 변환을 허용하지 않습니다 literal to float (F/f 접미어를 사용하여 float 리터럴을 지정하면이 오류를 피할 수 있습니다.)
byte b=16; //OK
float f1=16.9; //error
이는 C# 언어 사양의 섹션 6.1.8에 덮여 당신
부동 소수점 변환에 관한 규칙은 역순이지만, 그들은. 'float f = (float) (1.0/10.0);'이 타입 변환을 필요로하는 좋은 이유는 없습니다 ('f'는 타입에 대해 0.1의 가장 정확한 표현을 유지할 것입니다). 그러나'double d = 1.0f/10.0 f '는'd '에 할당 된 값이 (이중 정밀도와 관련하여) 아무 곳에도 0.1에 가깝지 않더라도 경고없이 컴파일됩니다. – supercat