본문 바로가기

내 이야기

(602)
Call By [Value, Pointer, Reference] void Call_By_Reference(int &n) { n++; return; } void Call_By_Value(int n) { n++; return; } void Call_By_Pointer(int *n) { (*n)++; return; } int main() { int a=0; Call_By_Value(a); printf("%d\n",a); Call_By_Reference(a); printf("%d\n",a); Call_By_Pointer(&a); printf("%d\n",a); ================================= 0 1 2
int값 입력받아서, 비트값 출력하기(재귀함수) void bitCheck(int input,int check) // 입력 숫자 , 비트 자리수 { int checkBit=1; if(check
비트검사 int main() { int a= 0x3a7d; int input; int zeroOne; int check=1; int scanfCheck=0; while(1) { printf("a변수의 몇 승 bit를 검사할까요? : "); scanfCheck = scanf("%d",&input); if(!scanfCheck) break; for(int i=1;i
비트 연산 char a=0xff, res; res = a >> 3; printf("%#x\n",res); unsigned char b=0xff, res1; res1 = b>>3; printf("%#x\n",res1); 0xffffffff : signed는 sign bit로 채움. 0x1f : unsigned는 0으로 채움. printf 할 때 프린트버퍼에 먼저 들어가는 데, 4바이트 단위로 들어감. 1바이트 char를 넘길 때, 확장해서 넘김. unsigned가 들어 갈 때, 확장 시 0으로 확장해서 0000001f 이므로 ,1f만 찍힘. signed일 경우에는 sign bit로 확장. ffffff가 확장됨.
배열의 이름과 주소값 char* arr[10]; printf("arr: %p &arr : %p\n",arr,&arr); arr: 0012FF58 &arr : 0012FF58 배열의 이름 값은 주소이며, 배열의 이름값의 &는 동일한 주소값을 가리키며, 단지 차원을 높이는 역할만 함.
예약 영역 vs 미예약영역 1: int arr[3]={1,2,3}; 2: printf("%d\n",arr[3]); 3: arr[3] = 5; arr[0]~arr[2] : 예약영역 기타 미 예약 영역 예약영역 : 쓰기 및 읽기 가능 미예약영역 : 쓰기 불가, 읽기 가능 2번까지는 출력(쓰레기 값) 3번은 런타임에러 : 미예약영역에 쓰기 시도
Lvalue / Rvalue Lvalue에는 변수만 가능 Rvalue에는 변수 및 상수 모두 가능. Lv = Rv 1. type 2. 차원 이 동일해야함. 일반상수는 무조건 0차원 주소상수는 최소 1차원 이상 차원조절 연산자 * [] & (type) -> int main(int argc, char* argv[]) { char ch3[2]; ch3="a"; return 0; } 에러. ch3는 배열의 주소값. 배열의 주소값은 "주소상수"임 Lvalue 에는 상수가 안 됨.
부동소수점 1 #include 2 int main(void) 3 { 4 printf("%x : %x \n", 1.0); 5 printf("%x : %x \n",0.0); 6 printf("%d \n",3.0); 7 } 결과 값 : 0:3ff00000 0:0 0 3 -> 2진수 : 11.0(2) 정규화 : 1.1 *2^1 프린트 버퍼의 특성상 float도 프린터버퍼로 들어가면 double로 변환되서 들어감.(실수) char(1바이트)를 넣을 때는 4바이트로(int)로 캐스팅되서 들어감. 프린트 버퍼는 4바이트씩 읽어감. #include 시스템 표준 헤더파일 #include "plming.h" 사용자 헤더파일. 현재 위치 기준