본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 4.10 scanf() 함수의 사용법 ~ 5.2 대입 연산자와 몇 가지 용어들

728x90

4.10 scanf() 함수의 사용법

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	int i;
	float f;
	char str[30];
	scanf("%d %f %s", &i, &f, str);		// string은 &사용 X
	printf("%d %f %s\n", i, f, str);
    
	return 0;
}

 

Output : 
123 3.14 hello 입력 ->
123 3.140000 hello
  • scanf()는 띄어쓰기와 줄바꿈으로 입력을 구분

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	char c;
	scanf("%c", &c);
	printf("%i\n", c);	// 입력받은 문자의 ASCII Code 출력
    
	unsigned u;
	scanf("%i", &u);	// unsigned를 signed로 입력받음 -> 자료형과 변환지정자가 맞지 않음
	printf("%i\n",u);	// signed를 출력

	unsigned u2;
	scanf("%u", &u2);	// 음수 입력시 overflow 발생
	printf("%u\n", u2);

	return 0;
}

 

Output :
   -> 빈칸 (blank) 입력
32
-123 입력 ->
-123
-123 입력 ->
4294967173
  • 빈칸 (blank)도 고유의 ASCII Code가 있다 (32)
  • u에서 unsigned 변수를 signed로 받고 출력하므로 음수 입력이 가능 -> 자료형에 맞지 않는 변환지정자 사용

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	double d = 0.0;
	scanf("%lf", &d);	// printf에서는 float과 double을 %f로 받았으나, 				
	printf("%f\n", d);	// scanf에서는 float은 %f, double은 %lf 사용

	char str[30];
	scanf("%5s", str);	// 5글자 까지만 입력 가능
	printf("%s\n", str);

   	char i;
   	scanf("%hhd",&i);	// 123a456 입력시 123만 입력을 받고 a에서 입력을 멈춤
   	printf("%i\n",i);	
    
	return 0;
}

 

Output :
123.456 입력 ->
123.456000
abcdefgh 입력 ->
abcde
123a456 입력 ->
123

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>	

int main()
{
	int a, b;
	int i = scanf("%d%d", &a, &b);	// return value of scanf() = 몇개의 변수를 입력받았는가
	printf("%d\n", i);

	// *modifier for printf()
	int j = 123;
	int width = 5;			
	printf("Input width :");
	scanf("%d", &width);		// 출력할 때의 width를 조정
	printf("%*d\n", width, j);	// width가 *에 들어감

	// *modifier for scanf()
	int k;
	scanf("%*d %*d %d", &k);	// 앞에 *이 붙은 변환지정자는 무시. 입력은 3개를 받으나 
    					// 앞의 2개는 무시하고 3번째 입력을 k에 넣음
	printf("Your third input = %d", k);

	return 0;
}

 

Output :
123 456 입력 ->
2
Input width :5 입력 ->
  123	(앞에 두칸 띔)
123 456 789 입력 ->
Your third input = 789

 

 

5.1 반복 루프와의 첫 만남

#include <stdio.h>

int main()
{
	int n = 1;			// 반복문의 초기 조건 

	while (n < 11) {		// 반복문이 반복될 조건
		printf("%d\n", n);
		n = n + 1;		// 변하는 조건
	}

	return 0;
}
  • 괄호 안의 조건을 만족하는 동안 계속 중괄호 안의 코드를 반복
Output :
1
2
3
4
5
6
7
8
9
10

 

5.2 대입 연산자와 몇 가지 용어들

기본 연산자들 -> =(대입 연산자) ,+, =, *, /

 

  • 연산자 operator
  • 피연산자 operand -> 변수, 리터럴등(i, 1)

 

  • Data object (object) : 메모리에 있는 데이터를 object 형태라 부름. 이 형태가 발전하여 객체지향 프로그래밍이 나옴
  • L-value (object locator value) : 등호 왼쪽의 값. 어떤 값을 대입할 수 있는 공간, 메모리를 차지하고 있는 특정 데이터 객체(개체). L-value는 임시적으로 R-value의 역할을 할 수 있음 ex) i = i + 1에서 오른쪽의 i (자기가 가지고 있는 값을 의미). data object가 L-value가 될 수 있음
  • *object locator = 메모리 주소.
  • R-value (value of an expression) : 등호 오른쪽의 값, 대입할 값. 값 자체를 의미. 수정 가능한 L-value에게 대입될 수는 있지만, R-value는 메모리 공간을 가지고 있지 않기 때문 자기 자신은 L-value가 될 수 없음. 
int i;		// data object
i = 1024;	// 오른쪽의 값을 왼쪽에 대입. 
		// 1024는 임시적으로 생겨난 상수 -> data object가 아님
i = i + 1;	// i는 메모리 주소를 대표하는 변수명

const int TWO = 2;  	// TWO는 수정 불가능한 L-value. 여기서 = 는 대입이 아니라 초기화
		
int a, b, c;		// 수정 가능한 L-value

a = 42;			// 42, (a + b) -> R-value
b = a;
c = TWO * (a + b);	// (a + b)는 프로그램이 계산하는 임시 값(expression). 계산이 끝나면 사라짐

 

 

 


강의 출처 : https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com