Dos Equis

2111 단어 dos
다음 프로그램은 무엇을 인쇄합니까?
1 public class DosEquis{ 

2  public static void main(String[]args){ 

3   char x= 'X'; 

4   int i = 0; 

5   System.out.println(true ? x :0); 

6   System.out.println(false ? i : x);

7   //System.out.println(false ? 0 : x); 

8  } 

9 } 


 
당연히 X, X라고 생각하실 수도 있어요.
(변수 i를 숫자로 바꾸어 출력한 것은 X X)
그런데 실제로 정말 그런가요?정답은 부정적이고, 그가 인쇄한 것은 X88이다.
혼합 유형의 계산이 혼란을 일으키기 때문에 조건표현식에서 다른 어느 곳보다도 뚜렷하게 나타난다.
조건 표현식 결과 유형을 결정하는 규칙은 너무 지루하고 복잡해서 완전히 기억하기 어렵지만 그 핵심은 세 가지이다.
• 두 번째와 세 번째 작업 수가 같은 유형을 가지면 조건 표현식의 유형입니다.다시 말하면, 너는 혼합 유형의 계산을 돌려서 큰 번거로움을 피할 수 있다.
• 만약 한 조작수의 유형이 T라면, T는byte,short,char를 표시하고, 다른 조작수는 int 형식의 상수 표현식이며, 그 값은 유형 T로 표시할 수 있으며, 조건 표현식의 유형은 T이다.
• 그렇지 않으면 조작수 유형에 대해 2진 숫자를 활용하여 향상시킨다. 조건표현식의 유형은 두 번째와 세 번째 조작수가 향상된 후의 유형이다.
프로그램의 두 조건 표현식 중, 하나의 조작수 형식은char이고, 다른 형식은 int이다.두 표현식에서 int 작업 수는 모두 0이며,char로 표시될 수 있습니다.그러나 첫 번째 표현식의 int 조작수만 상수 (0) 이고, 두 번째 표현식의 int 조작수는 변수 (i) 이다.따라서 두 번째 표현식은 첫 번째 표현식에 적용되었다. 그 반환 유형은char이고, 세 번째 표현식은 두 번째 표현식에 적용되었다. 그 반환 유형은 int와char가 2진 숫자를 활용한 후의 유형, 즉 int이다.

좋은 웹페이지 즐겨찾기