아 () 이거면 가변인슈 ...이 생략된 형태임??
C99나 c11 지원하는 컴파일러로 저렇게 하면 안되는거 같은디
글쓴이(106.240)2016-02-24 00:10
글쓴이 // 아닝. C99, C11이랑은 관련 없을 걸? C++이 아니라 C언어에서만 되는 문법임. C99 이후에도 되는 걸로 알아. B언어 스타일 선언이라 컴파일러가 인자 개수나 타입 체크를 엄격하게 하지 않는 것임.
ㅅㅅㅅ(175.252)2016-02-24 00:16
...랑 같은 게 아니고. ...는 매개 변수가 하나는 있어야지.
ㅅㅅㅅ(175.252)2016-02-24 00:17
우와 천재다 ㄷㄷㄷ
고마워!! 재밋는 사실 하나 알아가네 ㅋㅋ
글쓴이(106.240)2016-02-24 00:18
C++에서는 ()랑 (void)를 같은 것으로 본다.
ㅅㅅㅅ(175.252)2016-02-24 00:18
그러네 ...은 고정인수가 하나 잇어야하지 ㅋㅋㅋㅋㅋ
글쓴이(106.240)2016-02-24 00:18
프갤에도 고수가 있엇네.
글쓴이(106.240)2016-02-24 00:20
저런 스타일의 함수 선언을 NB (New B) 스타일 선언이라 부름. NB는 C언어의 초기 이름이자 초기 형태.
ㅅㅅㅅ(175.252)2016-02-24 00:20
int sum (int a, int b) { return a + b; } <= C 스타일 /
int sum (a, b)
int a;
int b;
{ return a + b; } <= NB 스타일. NB 스타일로 함수 선언하면 컴파일러는 B언어 때의 레거시 동작으로 함수 호출 시 인자 개수나 인자 타입 체크를 하지 않아.
ㅅㅅㅅ(175.252)2016-02-24 00:23
즉, 매개 변수를 int로 선언하고 부동 소수점 실수 값이나 포잊터를 넘길 수도 있다는 얘기.
ㅅㅅㅅ(175.252)2016-02-24 00:24
예전에 바둑돌문제 풀때 인자개수 안맞았는데도 잘됐었는데 아무이유도 없던거였군요
코로모(qscsq1)2016-02-24 00:25
당연히 2의 보수법 표기 체계랑 부동 소수점 표기 체계는 완전히 다르기 때문에 값은 엉뚱하게 읽힘.
ㅅㅅㅅ(175.252)2016-02-24 00:25
ㅅㅅㅅ아 그럼 함수 매개변수에 실수 값이나 포인터 넘기면
실제 함수에서는 타입 체크는 못하지만 int 변수로 자동 타입 변환 되는고야?
글쓴이(106.240)2016-02-24 00:28
ㅅㅅㅅ아 그리고 혹시.너 k&r 책 봣음? 저 내용 k&r에서 본거 같기두 헌데
글쓴이(106.240)2016-02-24 00:30
글쓴이 // 타입 체크를 안하는 거랑 묵시적 형 변환은 다른 얘기. 저 경우는 묵시적 형 변환을 해 주는 게 아니라 caller 입장에선 알아서 넘기고 callee 입장에서도 알아서 생각한 대로 받기 때문에 타입이 안 맞으면 당연히 값이 깨짐.
ㅅㅅㅅ(175.252)2016-02-24 00:30
글쓴이 // K&R 책은 가지고는 있는데 거의 안 봄. 다 아는 내용이더라 --; 근데 그 책 함수 선언 스타일이 저런 형태라 K&R style이라 불리기도 하는 듯.
아 글 이상하게 올라감. sum은 새 줄.
Sum 매개변수 ...아님? 가변변수 가 아니구?
Stdarg.h 없는거??
ㄴ 걍 에러야...
1번?
글쓴이 //
http://ideone.com/HTdcPx
C언어에서는 함수 선언에서 ()와 (void)는 의미가 다름.
ㄴㅇㅇ ()로 해두면 가변인자로 알아먹지
ㅅㅅㅅ님 저거 c99 이전만 가능한건가요? 왜 10인지 설명좀 ㅠㅠㅠ
아 () 이거면 가변인슈 ...이 생략된 형태임?? C99나 c11 지원하는 컴파일러로 저렇게 하면 안되는거 같은디
글쓴이 // 아닝. C99, C11이랑은 관련 없을 걸? C++이 아니라 C언어에서만 되는 문법임. C99 이후에도 되는 걸로 알아. B언어 스타일 선언이라 컴파일러가 인자 개수나 타입 체크를 엄격하게 하지 않는 것임.
...랑 같은 게 아니고. ...는 매개 변수가 하나는 있어야지.
우와 천재다 ㄷㄷㄷ 고마워!! 재밋는 사실 하나 알아가네 ㅋㅋ
C++에서는 ()랑 (void)를 같은 것으로 본다.
그러네 ...은 고정인수가 하나 잇어야하지 ㅋㅋㅋㅋㅋ
프갤에도 고수가 있엇네.
저런 스타일의 함수 선언을 NB (New B) 스타일 선언이라 부름. NB는 C언어의 초기 이름이자 초기 형태.
int sum (int a, int b) { return a + b; } <= C 스타일 / int sum (a, b) int a; int b; { return a + b; } <= NB 스타일. NB 스타일로 함수 선언하면 컴파일러는 B언어 때의 레거시 동작으로 함수 호출 시 인자 개수나 인자 타입 체크를 하지 않아.
즉, 매개 변수를 int로 선언하고 부동 소수점 실수 값이나 포잊터를 넘길 수도 있다는 얘기.
예전에 바둑돌문제 풀때 인자개수 안맞았는데도 잘됐었는데 아무이유도 없던거였군요
당연히 2의 보수법 표기 체계랑 부동 소수점 표기 체계는 완전히 다르기 때문에 값은 엉뚱하게 읽힘.
ㅅㅅㅅ아 그럼 함수 매개변수에 실수 값이나 포인터 넘기면 실제 함수에서는 타입 체크는 못하지만 int 변수로 자동 타입 변환 되는고야?
ㅅㅅㅅ아 그리고 혹시.너 k&r 책 봣음? 저 내용 k&r에서 본거 같기두 헌데
글쓴이 // 타입 체크를 안하는 거랑 묵시적 형 변환은 다른 얘기. 저 경우는 묵시적 형 변환을 해 주는 게 아니라 caller 입장에선 알아서 넘기고 callee 입장에서도 알아서 생각한 대로 받기 때문에 타입이 안 맞으면 당연히 값이 깨짐.
글쓴이 // K&R 책은 가지고는 있는데 거의 안 봄. 다 아는 내용이더라 --; 근데 그 책 함수 선언 스타일이 저런 형태라 K&R style이라 불리기도 하는 듯.
아하 고맙데이 ㅋㅋ 너같은 애들이랑은 친해지고 싶다
http://lgstar.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다. - DCW
안녕 천재. 연락해라. 언제고.