[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23Seok-joon Yun
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
Item 20, 21, 23
Item 20 : Use std::weak_ptr for std::shared_ptr-like pointers that can dangle. +정은식
Item 21 : Prefer std::make_unique and std::make_shared to direct use of new. +이동우
Item 23 : Understand std::move and std::forward. +제한재
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23Seok-joon Yun
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
Item 20, 21, 23
Item 20 : Use std::weak_ptr for std::shared_ptr-like pointers that can dangle. +정은식
Item 21 : Prefer std::make_unique and std::make_shared to direct use of new. +이동우
Item 23 : Understand std::move and std::forward. +제한재
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 발표는 이전에 발표했던 내용에서 일부 사례 추가 및 최신 내용으로 갱신한 버전입니다.
11. 11
변수 선언 시 주의사항
변수 이름은 알파벳, 숫자, 언더바(_)로 구성
대소문자 구분
변수 Num과 변수 num은 서로 다른 변수
변수 이름은 숫자로 시작 불가
키워드 사용 불가 (if, else, for, while …)
공백 포함 불가
27. 27
특수 문자의 종류
f와 v는 모니터출력이 아닌 프린터출력을 위해 정의된 특수문자
이기 때문에 모니터의 출력에 사용하면, 이상한 문자 출력
28. 28
printf 함수의 서식지정과 서식문자들
서식문자 설명
%d , %i 10진수 정수 (양수,음수)
%x 16진수 정수
%o 8진수 정수
%f 10진수 실수(소수점 이하 6자리까지 표현, 7자리를 반올림, float)
%lf 10진수 실수(소수점 이하 6자리 까지 표현, 7자리를 버림, double)
%c 한 개의 문자
%s 문자열
%u 10진수 정수 (양수)
%e e 표기법에 의한 실수 (소수점 6자리까지 표현, 7자리를 반올림)
%E E 표기법에 의한 실수 (소수점 6자리 넘는 것도 표현)
%g 소수점 이하 자리 수에 따라 %f , %e를 선택
%G 소수점 이하 자리 수에 따라 %F, %E를 선택
%% % 기호 출력
29. 29
필드 폭을 지정한 정돈된 출력
%8d
• 필드 폭을 8칸 확보 후, 오른쪽 정렬하여 출력 진행
%-8d
• 필드 폭을 8칸 확보 후, 왼쪽 정렬하여 출력 진행
30. 30
실수 출력을 위한 서식문자 :%d, %e
#include <stdio.h>
int main(void)
{
printf("%f n", 0.1234);
printf("%e n", 0.1234);
printf("%f n", 0.12345678);
printf("%e n", 0.12345678);
return 0;
}
31. 31
실수 출력을 위한 서식문자 :%g
#include <stdio.h>
int main(void)
{
double d1=1.23e-3;
double d2=1.23e-4;
double d3=1.23e-5;
double d4=1.23e-6;
printf("%g n", d1);
printf("%g n", d2);
printf("%g n", d3);
printf("%g n", d4);
return 0;
}
32. 32
문자 출력을 위한 서식문자: %s
#include <stdio.h>
int main(void)
{
printf("%s, %s, %s n", "AAA", "BBB", "CCC");
return 0;
}
33. 33
Scanf: 정수 기반 입력형태 정의
• %d: 10진수 정수 형태로 데이터 입력 받음.
• %o: 8진수 양의 정수 형태로 데이터 입력 받음.
• %x: 16진수 양의 정수 형태로 데이터 입력 받음.
#include <stdio.h>
int main(void)
{
int num1, num2, num3;
printf("세 개의 정수 입력: ");
scanf("%d %o %x", &num1, &num2, &num3);
printf("입력된 정수 10진수 출력: ");
printf("%d %d %d n",num1, num2, num3);
return 0;
}
34. 34
형 변환 (Type Conversion)
특정 데이터의 형을 다른 데이터의 형으로 변환
묵시적 형변환
컴파일러에 의해 자동으로 수행
수식에서 데이터형이 혼합되어 사용되거나, 특정 변수에
다른 형의 값이나 변수 대입 시
명시적 형변환
프로그래머가 cast(형 변환자)를 사용하여 강제적으로 형
변환 수행
‘(변환하고자 하는 타입)’ 을 변수 앞에 적어줌
Ex> myInt = (int)myFloat;
35. 35
실습문제
대출 상환금 계산 프로그램
고객이 대출한 금액, 상환년수, 연이자율을 이용해 고객이
장기적 혹은 총 갚아야할 금액을 알려주는 프로그램
d = 연상환금 (고객이 매년 갚아야 할 상환금)
p = 대출 원금
y = 상환 년수
r = 연 이자율 (%)
결과값은 소수점 이하는 버리고 정수형으로 출력
d =
(1 + 𝑟) 𝑦
−1
(1 + 𝑟) 𝑦
∗ 𝑝 ∗ 𝑟