22.03.03 회고

김영태·2022년 3월 3일

c언어 주석

/*
내용
*/
// 내용   <= 한 줄에만 쓸 수 있음

c언어 자료형
실수는 float, double 두 가지의 형태로 표현가능

float a = 3.141592f;
double b = 3.1415926535;

float 숫자 뒤에 f가 붙은 이유는 double로 오인하지 말라는 의미에서 붙인 것

파이썬, c언어 공통

int a = 23;
printf("a의 값은 : %5d \n", a);

%d는 정수형의 값을 넣고 싶을 때 사용.
%5d는 a를 %5d에 넣었을 때 총 5칸으로 표기하라는 뜻(%7d면 총7칸)
결과값을 출력하면

___23

와 같이 출력될 것.
뒤에서부터 숫자를 출력하는 이유는 잘 모르겠음.
다만, 뒤에 공백으로 출력할 경우 사람이 볼 때 인식하지 못할 가능성 때문에 default값으로 설정해뒀을 확률이 높음.

%-5d

와 같이 사용하면

23___

과 같이 표시할 수 있다고 함.


int형은 4바이트 32비트로 되어있음

a = 9 # 1001 = #0000 0000 0000 0000 0000 0000 0000 1001
~a # 0110 = # 1111 1111 1111 1111 1111 1111 1111 0110

~a는 a를 반전연산하라는 뜻임


int a = 1;
printf("a값 : %u", a);

%u는 unsigned 로 인식하라는 뜻. 기존의 int가 -2147483648~ 2147483647의 값을 가진다면, unsigned는 음수값을 전부 양수로 돌려서 4294967295 와 같이 더 큰 숫자를 표기할 때 사용가능.
overflow의 가능성을 막아줄 수는 있으나 완전히 막을 수는 없다고 함


scanf #형태는 파이썬의 input과 유사
double형의 변수를 입력받기 위해서는 %lf, float형의 입력을 받기 위해서는 %f로 받아야함
>>> printf가 %f로 지정해도 float, double 둘 다 받았던 것과는 대조적

%hd = short형
%d = int형
%ld = long형

허용된 메모리 이상의 데이터를 집어넣어서 발생하는 오류를 버퍼 오버플로우라고 함. 보안상 취약.


비트연산자 &(비트단위로 연산)
int a = 31, b = 15; 일 때
a, b = 11111 01111
공통인 01111값만 출력 = 15

논리곱 연산자 &&, || (참 | 거짓 = 1 | 0)


if (!p) { // p==0과 같은 의미
}

do-while문은 do 문을 먼저 수행하고 1번 while문을 돌린뒤 조건식이 만족되느냐에 따라 더 돌릴지 말지 결정됨

#include <stdio.h>
int main() {
int i=1, sum=0;

do {				// do문은 조건식이 없으므로 무조건 실행
	sum+= i;		// i=1, sum = 1
    i++				// i를 출력한 뒤 더해라 >>> i = 2
    } while (i <1); // while(/*조건식*/) 부분
    				// 원래 i=2이므로 실행이 안되지만 do-while문이라 일단 한번 실행
    printf("%d", sum);
    return 0;
}
>>> 1

const int a=3; // 과 같이 쓸 경우 절대 변하지 않음

0개의 댓글