-
20140314 (for, if, 삼항연산자)부산IT학원/스마트컨트롤러 2014. 3. 14. 17:10
20일차
---------------
for 문
---------------
- 반복문이다.
for ( 초기식 ; 조건 ; 반복식 )
{
명령
}
이런 형태이고 재미있는 것은 초기식과 반복식에
다중으로, 생략으로 선언이 가능하다.
ex) 예제 소스
#include <stdio.h>
int main()
{
int iNum1;
int iNum2;
int iNum3;
// - 5 명령이 한 줄일 경우 중괄호 생략 가능
for(iNum1 = 0, iNum2 = 0 ; 5 > iNum1 ; iNum1 = iNum1 + 1, iNum2 = iNum2 + 2)
printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
// - 4
iNum1 = 0;
iNum2 = 0;
while( 5 > iNum1 )
{
printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
iNum1 = iNum1 + 1;
iNum2 = iNum2 + 2;
}
// - 3
iNum1 = 0;
iNum2 = 0;
for( ; 5 > iNum1 ; )
{
printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
iNum1 = iNum1 + 1;
iNum2 = iNum2 + 2;
}
// - 2
iNum2 = 0;
for(iNum1 = 0 ; 5 > iNum1 ; iNum1 = iNum1 + 1)
{
printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
iNum2 = iNum2 + 2;
}
// - 1
for(iNum1 = 0, iNum2 = 0 ; 5 > iNum1 ; iNum1 = iNum1 + 1, iNum2 = iNum2 + 2)
{
printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
}
return 0;
}1, 2, 3, 4, 5번은 다 같은 식이다.
int main()
{
unsigned int uiCnt = 0;
// while(1)
for( ; ; ) // 조건을 생략하면 무한루프가 된다
{
printf("%u \n", uiCnt); // %u = unsigned int
++uiCnt;
}
return 0;
}또 while문과 같이 프로그래머의 의도하에 위와 같이 무한루프도 가능하다.
--------------------
if문 (흐름의 분기)
--------------------
- 흐름을 분기하는 제어문
if ( 조건 )
{ A }
이런 형태이고 조건이 참이면 괄호의 A를 실행하고
거짓이면 그냥 넘어간다.
그리고 밑에 한 명령만 할 경우 괄호를 생략 가능한데
가독성에 도움을 주기 위해 왠만하면 붙여주자.
ex)예제 소스
#include <stdio.h>
int main()
{
int iOpt;
double dNum1;
double dNum2;
printf("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 \n");
printf(" : ");
scanf("%d", &iOpt);
printf("연산하실 두 숫자 입력 \n : ");
scanf("%lf %lf", &dNum1, &dNum2);
if(1 == iOpt)
printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 + dNum2);
if(2 == iOpt)
printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 - dNum2);
if(3 == iOpt)
printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 * dNum2);
if(4 == iOpt)
printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 / dNum2);
return 0;
}- if ( 조건)
{ A }
else
{ B }
이것은 앞서 배웠던 if문에 else가 붙었는데
조건이 참일 경우 A ,
조건이 거짓일 경우 B 를 실행한다.
ex) 예제 소스
#include <stdio.h>
int main()
{
int iNum;
printf("숫자를 입력하세요 : ");
scanf("%d", &iNum);
if(0 < iNum)
{
printf("%d 는 0보다 큽니다 \n", iNum);
}
else
{
printf("%d 는 0보다 작습니다 \n", iNum);
}
return 0;
}- if ( 조건 )
{ A }
else if ( 조건 )
{ B }
else
{ C }
이건 조건이 여러개일 경우 위와 같이 갔다 붙이면 된다.
ex) 예제 소스
#include <stdio.h>
int main()
{
int iOpt;
double dNum1;
double dNum2;
printf("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 \n : ");
scanf("%d", &iOpt);
printf("두 개의 실수 입력 : ");
scanf("%lf %lf", &dNum1, &dNum2);
if(1 == iOpt)
{
printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 + dNum2);
}
else if(2 == iOpt)
{
printf("%.3lf - %.3lf = %.3lf \n", dNum1, dNum2, dNum1 - dNum2);
}
else if(3 == iOpt)
{
printf("%.3lf * %.3lf = %.3lf \n", dNum1, dNum2, dNum1 * dNum2);
}
else if(4 == iOpt)
{
printf("%.3lf / %.3lf = %.3lf \n", dNum1, dNum2, dNum1 / dNum2);
}
else
{
printf("Error!! \n");
}
return 0;
}이것 같은 경우 처음 if문 예제소스와 같은 기능인데
처음 if문의 경우 일일이 if문 조건을 만날 때마다 다 확인하고
넘어가지만
else if문의 경우 참인 조건을 만나면 명령을 실행하고
한 방에 다 빠져나가버린다
그러니 if문을 여러개 쓰는 것 보다 효율이 좋다.
또한 조건을 넣을 때 가능하면 확률이 가장 높은 순서대로
위에서부터 나열해 오면 더 높은 효율을 볼 것이다.
--------------
삼항연산자
--------------
- 조건 ? A : B
if문과 똑같은 역할을 한다.
참이면 A
뻥이면 B
그냥 예제를 보자
ex) 예제 소스
#include <stdio.h>
int main()
{
int iNum;
printf("숫자를 입력하세요 \n :");
scanf("%d", &iNum);
/*
// if문을 쓴 경우
printf("입력하신 숫자는 100보다 ");
if(100 < iNum)
{
printf("큼");
}
else
{
printf("작습");
}
printf("니다. \n");
*/
// 삼항 연산자를 쓴 경우
printf("입력하신 숫자는 100보다 %s니다 \n", 100 < iNum ? "큼" : "작습" );
return 0;
}if 문과 삼항연산자의 속도는 똑같다
다만 그 안에 들어가는 명령어에 따라
삼항연산자가 훨씬 좋은 효율을 낼 경우가 있다.
자주는 쓰지 말되 위와 같은 상황에만 쓸 것.....
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140318 (포인터, &, *, (int *) ) (1) 2014.03.18 20140317 (break, continue, switch, debug) (0) 2014.03.17 20140313 (while, do while, 중첩 while) (0) 2014.03.13 20140312 (리터럴 상수, 접미사, 아스키코드, 캐스팅, 서식문자, 특수문자) (0) 2014.03.12 20140311 (비트연산자, 상수, 변수, const, sizeof) (0) 2014.03.11