c++ unsigned 변수
프로그래밍/C++ 2013. 11. 28. 10:00 |c/c++ 에서 unsigned 변수를 사용할 땐 주의해야 합니다.
수식에서 signed 변수와 unsigned 변수를 섞어 사용하면 타입 변환이 일어납니다.
타입 변환 규칙을 분명히 알고 사용해야 합니다.
(어렵지는 않습니다. 다른 타입을 가지는 변수들의 연산 결과는 더 넓은 표현 범위의 타입을 가집니다.
고로 signed int 와 unsigned int 의 연산 결과는 unsigned int 입니다.
결과는,
4294967295 4294967295 -1 |
입니다.
또한 unsigned 변수를 뺄셈에 사용하면 역시 버그가 발생할 가능성이 생깁니다.
결과가 음수가 나오면 overflow 가 발생하여 예상치 못한 결과가 발생할 수 있습니다.
논리적으로 음수가 절대 발생하지 않는 경우 unsigned 변수를 사용하는 것은 장점이 됩니다.
변수가 0 보다 작은 지를 체크하지 않아도 되기 때문이죠. 예를 들면
하지만 좋은 방법은 아니지만, 의도한 경우 이렇게 사용할 수는 있습니다.
약간의 장점이 있지만, 조심해서 사용해야합니다.
제 생각엔 몇 가지 경우를 제외하면 가능한 unsigned 변수를 사용할 필요가 없다고 생각합니다.
대략 count, size 를 표현해야 하는 경우에만 사용하면 되지 않을까 생각합니다.
java 에는 unsigned 변수 타입이 없습니다. (굳이 따지면 char 는 unsigned 타입이긴 합니다만)
왜냐하면 약간의 장점에 비해 복잡하기 때문입니다.