본문 바로가기

C&C++_Basic/C_Pointer

Double 을 int byte로 나눠서 사칙연산

  1. 다음을 참고로 표준입력으로 받은 int 형의 두 정수의 사칙연산을 수행하는 프로그램을 작성하시오.
  • double 형 변수의 8바이트 저장 구조를 각각 4바이트의 저장 구조로 생각해서 표준입력으로 받은 두 정수를 저장
  • 두 정수에 대하여 사칙연산을 수행
#include<stdio.h>
# define MAX(x,y) ((x)>(y))? x : y
# define MIN(x,y) ((x)<(y))? x : y
int main()
{
	
	int* a = NULL; // 포잍너는 반드시 선언을 해줘야 하기 때문에 NUll 값으로라도 해야 한다.  
	int* b = NULL;
	
	double data1 = 0; // intintailzing = 이 메모리를 이만큼 할당하겠습니다
	// 할당된 메모리에, scanf 로 받고 시은 정루슬 받을 것이고
	// 하나는 그곳 그대로, 하나는 주소값 + 4해서.  
	printf("두 정수를 입력하세요\n");
	scanf("%d %d", &data1, &(data1)+sizeof(int));
	
	/*
	scanf  >> &a  : 주소값을 인자로 넣어주는 것
	%d , %(d+4) / &(d+sizeof(int))
	*/
	// 정수로 받겠습니다. 라는 표현.  
	
	// < > < > < > < >, < > < > < > < > 8개로 선언해주되
	// 앞 4byte는 int, 뒤에 +4 주소값해서 또 int 받기.
	// 즉, scanf 가 꼭 initialiation과 맞출 필요가 없다.  
	
	a = &data1;
	b = &data1+sizeof(int); // &( data1 + sizeof(int) )는 안된다. 괄호 밖으로 빼야 한다.  
	
	printf("a = %d b = %d\n", *a, *b);
	printf("%두 정수의 합은 %d입니다\n", *a + *b);
	printf("%두 정수의 차는 %d입니다\n", *a - *b);
	printf("%두 정수의 곱은 %d입니다\n", *a  * *b);
	printf("%두 정수의 나눗셈은 %d입니다\n", *a / *b);


	return 0;
}