기타 연산자 - 1
/* 제산 연산자('/')를 사용한 연산의 결과 확인 */
#include<stdio.h>
main()
{
int a;
double df;
printf("%d\n", 8 / 5); /* 정수형피연산자 */
printf("%lf\n", df = 8 / 5); /* 정수형 피연산자 */
printf("%lf\n", 8.0 / 5.0); /* 부동형 피연산자 */
printf("%lf\n", 8.0 / 5); /* 부동형과 정수형 피연산자 */
printf("%lf\n", 8 / 5.0); /* 정수형과 부동형 피연산자 */
printf("%d\n", a=8.0 / 5.0); /* 부동형 피연산자 */
printf("%d\n", 8.0 / 5.0); /* 부동형 피연산자를 %d로출력 */
}
#include <stdio.h> #define SM 60/* 1분은 60초 */ main() { int sec, min, left; printf("Input seconds = "); scanf("%d", &sec); /* '&' 기호를 빠트리면 큰일 난다 */ min = sec / SM; left = sec % SM; printf("%d seconds = %d minute %d sec.\n", sec, min, left); } |
/* 모듈로('%') 연산자의 사용 :centimeter를 meter로 환산하는 프로그램 */
#include<stdio.h>
#define CM_PER_M 100
main()
{
int meter, remainder;
long centimeter;
printf("Convert cetimeters to centimeters and meters!!\n");
printf("Enter the number of cetimeters you wish to convert:");
while(scanf("%ld", ¢imeter) == 1)
{
meter = centimeter / CM_PER_M;
remainder = centimeter % CM_PER_M;
printf("%ld centimeter is %d.%d meters\n\n",
centimeter, meter, remainder);
printf("Enter the number of cetimeters you wish to convert:");
}
}
예제 2. #include <stdio.h> main()/* 1∼20까지 제곱을 계산하여 역순으로 출력 */ { int n = 20; while (n > 0) { printf(" %10d : %10d\n", n, n*n); n = n - 1; /* n--; 또는 --n; */ } } |
예제 프로그램 2에서 n=n-1;은 설명문에 있는 대로 n--; 혹은 --n;과 같은 의미로 서로 바꿔서 표현해도 된다.
예제 3
#include <stdio.h> main() { int a = 1, b = 1; int aplus, plusb; aplus = a++; plusb = ++b; printf("aplus = %d, plusb = %d\n", aplus, plusb); } |
#include<stdio.h>
main()
{
int pre_inc = 0, post_inc = 0;
int pre_result, post_result;
while( pre_inc <= 2)
{
++pre_inc;
post_inc++;
printf("pre_inc = %d, post_inc = %d\n", pre_inc, post_inc);
}
put char('\n');
pre_result = post_result = 0;
pre_inc = post_inc = 0;
while( pre_inc <= 2)
{
pre_result = ++pre_inc;
post_result = post_inc++;
printf("pre_inc = %d, post_inc = %d\n",
pre_inc, post_inc);
printf("pre_result = %d, post_result = %d\n",
pre_result, post_result);
}
}
/* 증감 연산자의 부작용 */
#include<stdio.h>
main()
{
int I, j, k;
I = j = k = 5;
printf("%d,%d\n", i, i++);
printf("%d\n", -j+ j++);
printf("%d\n", k++ + -k);
i = j = k = 5;
printf("%d\n", ++j +j);
printf("%d\n", k++ +k);
i = j = k = 5;
printf("%d\n", ++i +i +i);
printf("%d\n", j + ++ j + j);
printf("%d\n", k + k+ ++k);
}
위의 식은 연산자의 우선 순위에 따라 다음과 같이 연산을 한다고 생각할 수 있습니다.
① 함수 전달 인수로 동일한 변수가 한 번 이상 사용될 경우 사용된 변수에 증감 연산자를 사용하면 안 된다.
② 식에서 한 번 이상 나오는 변수에 증감 연산자를 사용하면 안 된다.
① 11을 얻고자 한다면, temp = k; result = temp + ++k;
② 12를 얻고자 한다면, temp = ++k; result = temp + k;
3. comma 연산자 : 놓여진 순서대로 연산하는 연산자
i = (j = 15, j + 4); ===> /* j =15; i = j + 4; 와 동일함 */
0 댓글