문자
- 컴퓨터는 0과 1만 처리할 뿐임. 따라서 문자를 처리하기 위해 문자를 숫자에 대응시킴.
- 대응된 문자 체계가 아스키코드, 유니코드 등
#include <stdio.h>
int main() {
char a;
a = 'a';
printf("a의 값과 들어 있는 문자는? 값 : %d, 문자 : %c \n", a, a);
return 0;
}
// 출력 : a의 값과 들어 있는 문자는? 값 : 97, 문자 : a
// ASCII 코드로 a가 97에 대응
- char : 주로 문자를 저장하는 변수. character의 약자.
- "%c" : 문자 서식 문자
입력
#include <stdio.h>
int main() {
// 문자형 변수 선언 해주고,
char ch1;
char ch2;
// 첫 서식문자 위치에 입력한 값은 변수 ch1에, 다음 입력 값은 ch2에 저장됨.
scanf("%c, %c", &ch1, &ch2);
printf("입력한 값은 %c와 %c입니다.", ch1, ch2);
return 0;
}
- scanf() : 입력함수. 출력함수인 printf()와 짝꿍. 입력값 저장할 변수 앞에 &써줌.
오버플로우 문제가 있어 scanf_s로 바꿔 쓰곤 함. - char형 변수의 입력 서식문자와 출력 서식문자는 모두 "%c"
#include <stdio.h>
int main() {
// 정수형 변수 선언 해주고,
short sh;
int i;
long lo;
// 입출력
scanf("%hd, %d, %ld", &sh, &i, &lo);
printf("입력한 값은 %d, %d, %ld입니다.", sh, i, lo);
return 0;
}
- short형 변수의 입력 서식문자는 "%hd", 출력 서식문자는 "%d"
- int형 변수의 입력 서식문자와 출력 서식문자는 모두 "%d"
- long형 변수의 입력 서식문자와 출력 서식문자는 모두 "%ld"
#include <stdio.h>
int main() {
// 실수형 변수 선언 해주고,
float fl;
double du;
// 입출력
scanf("%f, %lf", &fl, &du);
printf("입력한 값은 %f, %f입니다.", fl, du);
return 0;
}
- float형 변수의 입력 서식문자와 출력 서식문자는 모두 "%f"
- double형 변수의 입력 서식문자는 "%lf", 출력 서식문자는 "%f"
다른 변수형 간의 연산에 주의할 점!
- 1번과 2번의 결과가 달라지는 이유?
double a;
a = 4.5;
// 1번은 40.1
9 * a / 5 + 32
// 2번은 36.5
9 / 5 * a + 32
- 1번의 연산 순서
- 9*a -> /5 -> +32
첫 연산은 int 9와 double a의 연산이므로 산술 변환되어 9가 double형이 되며, 그 결과인 40.5 역시 double형이 됨. 마찬가지로 double인 첫 결과와 int인 5의 연산인 두 번째의 결과 8.1 역시 double형. 마지막 연산도 산술 변환되면서 40.1이 됨.
- 2번의 연산 순서
- 9/5 -> *a -> +32
첫 연산이 int 9와 int 5의 만남인지라 결과인 1.8 역시 int형이 되며 1만 남아버림. 두 번째 연산이 a * 1이 돼버리며 세 번째 연산은 그대로 a + 32이므로 36.5가 됨.
'C언어 공부' 카테고리의 다른 글
07. 반복문 (0) | 2024.10.15 |
---|---|
06. 조건문, 논리연산자, 관계연산자 (0) | 2024.10.14 |
04. 산술연산자, 대입연산자, 비트연산자, 오버플로우 (0) | 2024.10.13 |
03. 변수 선언, 정수형, 실수형, 서식문자(변환문자) (5) | 2024.10.13 |
02. Hello, World! 분석하기 (0) | 2024.10.12 |