궁금증 연구소

안녕하세요. 궁금증연구소입니다.

오늘 포스팅 주제는 "Java에서 boolean과 int형 연산은 가능할까?"입니다.

 

#include <iostream>
using namespace std;

main()
{
    bool a = true;
    int b = 10;

    cout << a+b;
}

우선 c++/c 언어에서는 위와 같이 bool 자료형의 true는 1, false는 0으로 인식됩니다.

당연히 int형 자료인 b와 연산이 가능하죠.

 

c++ 연산자료

 

음 파이썬에서도 가능한 부분이죠

 

a: bool = True;
b: int  = 10;

print(a+b)
파이썬 연산결과

 

자바스크립트는 어떨까요?

 

const a = true;
let b = 10;

console.log(a+b);

가능하네요.

자바스크립트 연산결과

 

그렇지만, 자바스크립트에 타입을 붙여 개선한 타입 스크립트에서는 에러가 발생합니다.

let p: boolean = true;
let q: number = 10;

console.log(p+q);

타입스크립트 에러발생

 

마지막으로 오늘의 주제인, 자바를 살펴볼게요

 

public class p28{
    public static void main(String[] args){
        boolean a = true;
        int b = 10;

        System.out.println(a+b);
    }
}

자바 연산에러

타입 스크립트와 마찬가지로 자바 또한 다른 boolean은 다른 기본형과의 연산이 불가능합니다.

즉 자바에서는 true와 1은 다른 값입니다. 

 

 

따라서 c나 c++에서는 당연한 아래와 같이 무한히 hi를 출력하는 코드의 경우 보통은 while(1) 이런 식으로 true를 대신해 1을 적어 넣지만,

 

#include <iostream>
using namespace std;

main()
{
    while(1){
        cout << "hi";
    }
}

자바에서 위 코드를 실행하면,

public class p28{
    public static void main(String[] args){
        while(1){
            System.out.println("hi");
        }
    }
}

 

자바의 에러

위와 같이 컴파일도 전에 편집기의 에러 메시지를 살펴볼 수 있습니다.

 

while(1){
    console.log("hi");
}

웃긴 건 타입 스크립트는 또 위 코드가 되네요..

 

 

정리

 

boolean과 true의 연산이 가능한 불가능한 언어

Java, typeScript

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading