unsigned ์๋ฃํ๊ณผ signed ์๋ฃํ์ ํํํ ์ ์๋ ๋ฒ์๊ฐ ๋ค๋ฆ
๋๋ค.
๊ทธ๋์ ๊ฐ์ ์๋ฃํ์ด๋ผ๋ unsigned์ signed์ ๊ฐ์ ๋น๊ตํ ๋๋ ์ปดํ์ผ๋ฌ์์ warning์ ๋ฑ์ด์ค๋๋ค.
unsigned int uVal = 3;
int nVal = -1;
if (uVal > nVal)
{
printf("unsigned 3 is bigger than signed -1\n");
}
else
{
printf("signed -1 is bigger than unsigned 3\n");
}
์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๊น์?
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ else๋ฌธ์ธ "signed -1 is bigger than unsigned 3"์ด ์ถ๋ ฅ ๋ฉ๋๋ค.
ํต์์ ์ผ๋ก uVal์ด nVal๋ณด๋ค ํฌ๋ค๊ณ ์๊ฐํ๊ฒ ์ง๋ง unsigned์ signed๋ฅผ ๋น๊ตํ ๋๋ ๋ ์ค ๋ ํฐ ๋ฒ์์ธ unsigned๋ก ๋ณํ๋์ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ unsigned int(3)๊ณผ unsigned int(-1)์ด ๋น๊ต๋ ๊ฒ๋๋ค.
unsigned int์ ์์ ๊ฐ์ด ๋ค์ด๊ฐ๋ฉด unsigned int max(4294967295)๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ else๋ฌธ์ด ์ถ๋ ฅ๋์ต๋๋ค.
์ ๊ฐ์ ์ฐ๋ฆฌ ๋์ ๋ณด์ด๋ ๊ทธ๋๋ก ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด
if((int)uVal > nVal) ๋ก ๋น๊ตํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฒซ๋ฒ์งธ ์ถ๋ ฅ๋ฌธ์ด ์ถ๋ ฅ๋ ๊ฒ์
๋๋ค.
gcc/g++, MSVC++ ์ปดํ์ผ๋ฌ์์ ๋ชจ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์ต๋๋ค.
'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด > C++ ์์ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[std] iterator๋ณด๋จ const_iterator ! (0) | 2023.01.14 |
---|---|
๊ฐ์ฒด ์์ฑ์ ์๊ดํธ์ ์ค๊ดํธ ์ฐจ์ด (0) | 2023.01.14 |
[C++]ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค ์ฐจ์ด (0) | 2023.01.09 |
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ๊ฟํ! (0) | 2022.12.30 |
[c++] ๋๋ค ํํ์ ์ ๋ฆฌ (0) | 2021.03.09 |
๋๊ธ