C에는 함정이 많아 발조심해야 한다
오늘은 이를 피하기 위한 특강을 들었다
C는 양날의 검이라 한다…
근데 생각해보니 검은 원래 양날 아닌가?
좀 이상한 격언같다;;
날이 하나면 검(劍)이 아닌 도(刀)라 하니 말이다
살짝 어둠의 다크니스? 그런 느낌으로 쓰는건가?
int, C에서는 16 비트에서 2byte, 32/64 비트에서 4byte다
Python에서는 int가 고정크기가 아니라 10byte 넘는다;;
왜냐면 차피 직접 포팅하려 쓰는게 아니라서 말이다
최적화 신경 안쓰니 말이다
반면에 C는 직접 최적화를 위해 여러 타입을 사용한다
좀 거지 같긴 하지만 상황에 맞는 무기 쓰는 거 같아 묘한 쾌감이 있다 ㅇㅇ
=
는 대입 연산자이고, ==
는 비교 연산자다
뭐, 당연한 사실이고 지켜야 하지만…
파이썬과 달리 C발 C는 조용히 버그내서 주의해야한다
대입문이 아닌 대입 연산자라서 식으로 취급해서 그냥 대입으로써 동작한다
==
는 같으면 1, 다르면 0을 반환하는 식인데
=
는 저장하고 그 값을 결과로 내버리니 어지간하면 전부 통과해버린다
C에서의 if문은 0이면 False
고 이외에는 True
취급한다
&
와 |
은 비트 연산자고,
&&
와 ||
은 논리 연산자다
당연히 둘 섞어서도 조용히 진행하기에
틀린 그림 ㅅㅂ 찾기 해야 한다
int y = x/*p;
*p
로 나누겠다는 원대한 꿈은
주석처리 될 수 있다…
y = x / (*p);
띄워쓰기만 해도 되지만 괜히 깝죽거리지 말고 괄호까지 친절하게 씌워주자
포인터 벗겨놓는 취미 없다면 말이다
싱글 쿼터 더블 쿼터
'
, "
C언어에서는 이 두개 섞어쓰면 안된다
ㅅㅂ 파이썬은 둘 다 상관없었는데
C이 미친새끼는 15단계의 연산자 우선순위가 있단다;;
그러니 괄호를 잘 씌워주자 ㅇㅇ
코드 벗기기 그만해야겠다
문장을 끝낼때 ;
세미콜론 붙여주기
이건 ㅇㅈ
if
문 같은 코드 블럭에 세미 콜론 붙여버리면
시작하자마자 끝나고 다음 문장으로 넘어가 버린다
switch문? 에서 break 생략하지 말라고 한다
없으면 다음 case로 넘어간다는데…
ㅅㅂ switch문이 뭔지 모른다;;
알아보니 대충 if
문 변종 느낌인듯 싶다
뭔 세계 7대 난제 같은 제목이지만
if
문 else
문 쓸 때에 중괄호 잘 쳐줘야 한다는거다
else
는 가까운 if
문으로 붙는 특성이 있으니 말이다…
이쯤되면 코드 옷입히기 언어가 아닌가 싶다
바로 if
, else
에 바니ㄱ
Skip~
while (i < 3)
y[i] = x[i++]
이따구로 해놓으면 어지러워진다
왼쪽하고 오른쪽 중 뭐가 먼저 읽히는지 알 수 없으니…
for (i=0; i < 3; i++)
y[i] = x[i];
이런식으로 하란다
이거 ㄹㅇ 나도 겪어봤다
Skip~ 다음주에 처맞을테니 겪어보란다 ㅇㅇ
(포인터는 메모리 가리키기만 해 사용전에 메모리 할당 필수라 한다 소곤소곤)
NULL 포인터는 아무것도 가리키지 않으니…
역참조하면 걍 꺼져버린다
매크로가 뭔지 모른다
…
대충 define해서 간략하게 함수 만드는 느낌 같다
아무튼 macro 여러번 불려지고 하면
++, 함수 호출 등이 여러번 불려져
중복 발생 해버려 본래 의도와 바뀌어 버린다
Skip~
좀 방대해서 각자 공부하란다
포인터 주소로 여러가지 연산하면서 크기 알아내거나 컴퓨터 자원 줄이는 법 등이 있다 설명했다
정확히는 잘 모르겠다
그리고 다중 포인터 같은거 쓰지 말랜다
3중 포인터 쯤 가면 문제가 있을 확률 높다고 말이다
내 4중 나생문이…