목록c (4)
일상에서 멍때리기
큰수를 써야 할 경우 64bit int가 필요할 때가 있습니다. 어떻게 표현할까요? visual C(window)를 먼저 보면 선언 및 출력은 아래와 같습니다. 선언 : __int64 , unsigned __int64 출력 : %I64d, %I64u gcc(linux)에서는 조금 다르게 아래와 같이 표현됩니다. 선언 : long long, unsigned long long 출력 : %lld, %llud
필요해서 구현한 source #include#include#include char* rtrim(char*);char* ltrim(char*);char* trim(char*); int main(void){ char test [] = " aaaa "; char * test2; test2 = ltrim(test); printf("test : '%s', test2 : '%s'\n", test, test2); return 0;} char* rtrim(char* _str){ char t[1024]; char* end; strcpy(t, _str); end = t + strlen(t) - 1; while(end != _str && isspace(*end)) --end; *(end + 1) = '\0'; _str = ..
전위전산자와 후위연산자 간단히 보면 전위전산자(++i)는 값이 먼저 증가하고 작업이 수행되며 후위연산자(i++)는 작업이 수행된 후에 값이 증가한다고 배웠다. 간단한 예를 들어보자 * 전위연산자(++i) char a[4] = "abcd"; int i = 0; printf("%c\n", a[++i]);output b 1 *후위연산자(++i) char a[4] = "abcd"; int i = 0; printf("%c\n", a[i++]); printf("%d\n", i); return -1;output a1와 같이 모든 동작 수행후 i는 0->1로 증가되었지만 출력된 문자를 보면 어떻게 동작되었는지 이해가 갈것이다. 그렇다면 속도면에서는 어떠할까? 요즘같이 컴파일러가 좋아진 상황에서는 기본타입(int, fl..
내가 얼마나 무지하면 어지껏 이 차이도 몰랐단 말인가. 약간의 삽질과 구글링을 통해 알아낸 내용이다. 너무도 간단하게 배열 = 포인터 라는 지식이 불러온 삽질이라 할 수 있다. 먼저 두 예제를 보자 1 code char str [ ] = "Hello World" ;str[3] = '3' ;printf ( "%s \n " , str ) ; result Hel3o World 2 code char *str = "Hello World" ;str[3] = '3' ;printf ( "%s \n " , str ) ; result Segmentation Fault (Core Dumped) 코드상 큰 차이가 없어보이지만 선언 부의 작은 차이가 만들어 낸 결과이다. 1번의 char[] 의 경우 local data를 가지는..