반응형
#if 0
#include <stdio.h>
//32비트의 문제점을 해결한 코드
int main(int argc, char *argv[])
{
int i;
int item[32] = {0,};
item[700/32] |= 1<<(700%32);
item[800/32] |= 1<<(800%32);
for(i=0;i<1024;i++)
{
if(item[i/32] & (1<<(i%32)))
printf("%d\n",i);
}
item[700/32] &= ~(1<<(700%32));
for(i=0;i<4;i++)
{
if(item[i/32] & (1<<(i%32)))
printf("%d\n",i);
}
return 0;
}
#endif
#if 0
#include <stdio.h>
#define BIT_SET(x,index) (x[index/32] |= 1<<index%32))
#define BIT_ISSET(x,index) (x[index/32] & (1<<index%32)))
#define BIT_CLR(x,index) (x[index/32] &= ~(1<<index%32)))
//가독성을 높인 코드
int main(int argc, char *argv[])
{
int i;
int item[32] = {0,};
BIT_SET(item, 700);
BIT_SET(item, 800);
for(i=0;i<1024;i++)
{
if(BIT_ISSET(item,i))
printf("%d\n",i);
}
for(i=0;i<4;i++)
{
if(BIT_ISSET(item,i))
printf("%d\n",i);
}
return 0;
}
#endif
#if 0
#include <stdio.h>
#define BIT_SET(x,index) (x[index/32] |= 1<<index%32))
#define BIT_ISSET(x,index) (x[index/32] & (1<<index%32)))
#define BIT_CLR(x,index) (x[index/32] &= ~(1<<index%32)))
//#define TYPE int[32]
typedef int TYPE[32];
int main(int argc, char *argv[])
{
int i;
TYPE item = {0,};
BIT_SET(item, 700);
BIT_SET(item, 800);
for(i=0;i<1024;i++)
{
if(BIT_ISSET(item,i))
printf("%d\n",i);
}
for(i=0;i<4;i++)
{
if(BIT_ISSET(item,i))
printf("%d\n",i);
}
return 0;
}
#endif
#if 0
#include <stdio.h>
//역슬레쉬 \를 넣으면 전처리기가 한줄로 인식
//역슬레쉬 뒤에는 스페이스바나 기타 문자가 들어가서는 안된다.
//☆두줄 이상의 매크로 코드는 모두 이렇게 사용한다.
#define BIT_ZERO(x)
do{ \
int i; \
for(i=0; i<32; i++) \
x[i] = 0; \
}while(0);
//초기화가 추상화 되어있지 않는 문제 해결한 코드
int main(int argc, char *argv[])
{
int i;
TYPE item;
BIT_ZERO(item);
BIT_SET(item, 700);
BIT_SET(item, 800);
for(i=0;i<1024;i++)
{
if(BIT_ISSET(item,i))
printf("%d\n",i);
}
for(i=0;i<4;i++)
{
if(BIT_ISSET(item,i))
printf("%d\n",i);
}
return 0;
}
#endif
#if 0
#include <stdio.h>
//우선순위 조심 각각에 괄호 넣기
#define BIT_SET(x.index) ((x)->data[index/32] |= 1<<(index%32))
#define BIT_ZERO(x)
do{ \
int i; \
for(i=0; i<32; i++) \
x[i] = 0; \
}while(0);
typedef struct{
int data[32];
}TYPE;
//확장성의 문제를 해결한 코드
int main(int argc, char *argv[])
{
int i;
TYPE item;
BIT_ZERO(&item);
BIT_SET(&item, 700);
BIT_SET(&item, 800);
for(i=0;i<1024;i++)
{
if(BIT_ISSET(&item,i))
printf("%d\n",i);
}
for(i=0;i<4;i++)
{
if(BIT_ISSET(&item,i))
printf("%d\n",i);
}
return 0;
}
#endif
반응형
'C & C++ > C언어' 카테고리의 다른 글
[C] 전역변수와 static 차이 (0) | 2019.10.30 |
---|---|
[C] union과 구조체의 차이 (0) | 2019.10.30 |
[C] Type의 갯수 / Char형 (0) | 2019.10.30 |
[C] 매개변수의 전달(call by value/call by address 포함) (0) | 2019.10.28 |
[C] malloc /calloc (0) | 2019.10.28 |