목록프로그래밍 (30)
Jiyong's STUDY
int scanf(const char *format, ...);scanf 함수의 경우에는 공백단위로 입력받는다.즉 how are you 라는 문장을 입력한다고 하면 공백단위로how만 입력받게 되므로 문자열을 입력받기엔 부적합하다. #include int main(){char str[20];scanf("%s", str);printf(str);} 에서 how are you를 입력했다면how만 나오게 된다. char *gets(char *s);gets 함수의 경우에는 줄바꿈 단위로 입력받는다.엔터를 입력하기 전까지 문자열을 입력받는다.즉 줄을 읽어서 입력한다고 보자. #include int main(){char str[20];gets(str);puts(str);} 에서 how are you를 입력했다면how ..
(조건 ? 참일때의 값 : 거짓일때의 값)을 3항 연산자라고 한다 (a>b?a:b) 일때 a>b가 참이면 참일때의 값 a가 출력되고 a>b가 거짓이면 거짓일때의 값 b가 출력된다 #include int main(){int a=3; int b=2;printf("%d", a>b ? a:b);} 결과값은 a>b가 참이므로 a, 3이 나오게 된다
~ 연산자(Bitwise NOT) 변수값을 2진수로 바꿔서 NOT 연산한다 #include int main(){int a=2;printf("%d", ~a); // 00000010을 NOT 연산하여 11111011으로 계산한다} 결과는 -3 ~연산을 할 경우 ~a=-a+1이 된다 (부호변경시 2의 보수를 취하므로 1의 보수를 취하는것과 다름) & 연산자(Bitwise AND)두개의 변수값을 비교하여 2진수로 바꿔서 AND 연산한다 | 연산자(Bitwise OR)두개의 변수값을 비교하여 2진수로 바꿔서 OR 연산한다 ^ 연산자(Bitwise NOR)두개의 변수값을 비교하여 2진수로 바꿔서 NOR 연산한다
말그대로 메모리의 비트를 시프트해서 연산하는 방법 변수 이름 > n일 때에는 오른쪽으로 n만큼 시프트한다 (왼쪽일땐 2^n만큼 곱하고 오른쪽일땐 2^-n만큼 곱한다고 생각하자) #include int main(){int a=10; //a가 10일때printf("%d, %d", a1); // a*2, a/2와 같다} 에서 결과는 20, 5가 나온다
만약 원래 자료형이 int었을때 float로 #include int main(){int a=3.3; // 정수형에 소수점
실수형에서는 나누기의 값도 실수로 나옴 단, 나머지 연산자는 그 영향을 받지 않음. +2018.03.19 추가 ! 연산자 (NOT)는 참이면 거짓으로, 거짓이면 참으로 바꾼다 a가 1, 즉 참일때 !a는 0, 즉 거짓이 된다 && 연산자 (AND)는 a와 b가 있을 때 둘 다 참이어야 참으로 판정된다 a가 1이고 b가 0일 땐 a && b는 둘 다 참이 아니므로 0, 거짓이 나온다a가 1이고 b가 1일 땐 a && b는 둘 다 참이므로 1, 참이 나온다 || 연산자 (OR)은 a와 b중에 하나라도 참이 있다면 참으로 판정된다 a가 1이고 b가 0일땐 a || b는 a가 참이므로 1, 참이 나온다a가 0이고 b가 0일 땐 a || b는 둘 다 거짓이므로 0, 거짓이 나온다 ^ 연산자 (NOR)는 a와 b중..