웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
$i++ !== $i += 1
2003.08.04 22:23
에... 제목이 비교문...
무슨뜻인가 하면
변수 $i를 $i++ 를해서 1증가시키는것과
$i += 1 해서 증가시키는것이 다르다는것입니다.
음...
보통때는 값이 같죠.
그러나 인트(정수)의 한계에 가면 달라집니다.
렐카운터만들다가 안사실이고 이렇게 해보면 어떻까해서 글을 쓰는...
일단 증명을 위해 간단한소스를...
<?
// $i++ !== $i += 1
// int : -2147483648 ~ 2147483647
$i = 2147483647;
$j = 2147483647;
if($i++ == $j += 1){
echo "$i : $i == $j : $j";
}else{
echo "$i : $i !== $j : $j";
}
?>
2147483647라는 수는 32비트정수의 양수의 끝이죠. (즉31비트)
덤으로 나머지 한비트는(맨앞의) 부호로써서 1이면 음수 0이면 양수입니다.
소스에 주석으로 적은것은 정수의 범위를 표현한것입니다.
일단 변수 $i와 $j를 같이 정수의 끝값으로 줍니다.
그다음 if문으로 저렇게 대입과 동시에 비교를 하게합니다.
값이 같다면 위의 결과가 다르다면 아래가 실행되겠죠.
결과는
$i : -2147483648 !== $j : 2147483648
로써 역시 다르게 나왔습니다.
자세히보면 변수 $j가 정수의 한계를 벗어났고
변수 $i는 정수의 최소값이 되었습니다.
무슨사태인가 하면...
대입문을 다르게하는것으로 상당히 다른 결과를 초래할수있다는것입니다.
php의 내부구조는 잘모르지만
++로 증가시키는것과 +1 로 증가시키는 것이 다른것같군요
그래서 ++를 쓰지않고 +1간이 쓰면 숫자를
99 9999 9999 9999까지 처리할수있죠(렐카운터는 변수를 두개써서 저수의 제곱만큼 카운터가 가능;;)
저이상을 쓰면 지수적표현으로 되서 완전히 문자열로...
C에서는 저둘이 같을지도 모르겠지만
php에서는 ++로 처리하는것만 루프를 돌게되는것같네요
--로 같은현상을 나타낼듯합니다.
이상 허접한 팁이었습니다(_ _)
무슨뜻인가 하면
변수 $i를 $i++ 를해서 1증가시키는것과
$i += 1 해서 증가시키는것이 다르다는것입니다.
음...
보통때는 값이 같죠.
그러나 인트(정수)의 한계에 가면 달라집니다.
렐카운터만들다가 안사실이고 이렇게 해보면 어떻까해서 글을 쓰는...
일단 증명을 위해 간단한소스를...
<?
// $i++ !== $i += 1
// int : -2147483648 ~ 2147483647
$i = 2147483647;
$j = 2147483647;
if($i++ == $j += 1){
echo "$i : $i == $j : $j";
}else{
echo "$i : $i !== $j : $j";
}
?>
2147483647라는 수는 32비트정수의 양수의 끝이죠. (즉31비트)
덤으로 나머지 한비트는(맨앞의) 부호로써서 1이면 음수 0이면 양수입니다.
소스에 주석으로 적은것은 정수의 범위를 표현한것입니다.
일단 변수 $i와 $j를 같이 정수의 끝값으로 줍니다.
그다음 if문으로 저렇게 대입과 동시에 비교를 하게합니다.
값이 같다면 위의 결과가 다르다면 아래가 실행되겠죠.
결과는
$i : -2147483648 !== $j : 2147483648
로써 역시 다르게 나왔습니다.
자세히보면 변수 $j가 정수의 한계를 벗어났고
변수 $i는 정수의 최소값이 되었습니다.
무슨사태인가 하면...
대입문을 다르게하는것으로 상당히 다른 결과를 초래할수있다는것입니다.
php의 내부구조는 잘모르지만
++로 증가시키는것과 +1 로 증가시키는 것이 다른것같군요
그래서 ++를 쓰지않고 +1간이 쓰면 숫자를
99 9999 9999 9999까지 처리할수있죠(렐카운터는 변수를 두개써서 저수의 제곱만큼 카운터가 가능;;)
저이상을 쓰면 지수적표현으로 되서 완전히 문자열로...
C에서는 저둘이 같을지도 모르겠지만
php에서는 ++로 처리하는것만 루프를 돌게되는것같네요
--로 같은현상을 나타낼듯합니다.
이상 허접한 팁이었습니다(_ _)
댓글 14
제목 | 글쓴이 | 날짜 |
---|---|---|
스킨 시스템 구축.(1탄 읽어오기) [11] | 씨파개 | 2003.05.13 |
Wake On Lan 기능 사용하기... [3] | sMokaHallo | 2003.05.17 |
썸네일 자동생성하고 이미지 사이즈 자동 줄이기... [6] | sMokaHallo | 2003.05.21 |
홈페이지의 내용을 DB에 담기 [15] | 세죠위그이 | 2003.05.30 |
체크박스등으로 배열로 변수를 넘길때.. [1] | myself2 | 2003.06.06 |
php 로 기존 문서 포함시키기 [10] | 이성헌 | 2003.06.08 |
PHP 익히기 1 [24] | 구리구리 | 2003.06.09 |
PHP 익히기 2 [9] | 구리구리 | 2003.06.10 |
PHP 익히기 3 [11] | 구리구리 | 2003.06.17 |
이미 인클루드된 파일은 다시 인클루드하지 않기 [14] | 김병희 | 2003.06.20 |
htmlspecialchars 사용하시는 분들 [5] | holies | 2003.07.11 |
Thumbnail 생성하기 - 수정^^; [9] | holies | 2003.07.11 |
'와 "의 속도 차이?! [6] | holies | 2003.07.12 |
초간단 php 랜덤 이미지 및 랜덤 배경이미지 소스 [6] | 거금도 | 2003.07.24 |
다른 사이트에 있는 파일 읽어오기 [50] | 김규백 | 2003.07.25 |
스킨 시스템 사용하기 [2] | 김규백 | 2003.07.25 |
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?) [18] | HungryMania | 2003.08.01 |
체널을 응용해서 tmain.php?tdb=test&db=src 식으로 쓰기 [12] | 9000㎒ | 2003.08.01 |
$i++ !== $i += 1 [14] | 플로렐라 | 2003.08.04 |
개판 오분전 정규식(4) | 미친개 | 2003.08.07 |