C&C++_Basic/C_Pointer
C언어 char변수 16진수 4칙연산
mrawesome
2020. 3. 19. 17:18
- char 변수에 저장된 16진수 4칙연산 프로그램을 작성하시오. 하나의 16진수는 2자리로 이루어진다. (예: 3F ).
덧셈의 경우 3F 와 1B를 문자로 입력 받고 각각은 char 형 변수에 저장된다. 3F는 char a0=’3’, a1 = ‘F’ 이 각각 저장되고, 1B도 마찬가지로 char b0=’1’, b1=’B’ 에 각각 저장된다. 연산자도 별도의 char형 변수에 저장된다.
연산결과는 곱셈을 고려하면 최대 4자리를 차지하므로 char c0, c1, c2, c3 에 저장한다.
실행예:
연산식을 입력하시오>> 3F 1B +
5A
연산식을 입력하시오>> 3F 1B -
24
연산식을 입력하시오>> 3F 1B *
6A5
연산식을 입력하시오>> 3F 1B
#include<stdio.h>
int main()
{
int a,b;
char c;
printf("두 수와 연산식을 입력하세요 >> \n");
scanf("%x %x %c",&a,&b,&c);
int *pa = &a;//16진수 a의 값의 주소를 받는다, pi =&a
char *pA = (char*)&a;
//변환형 이용 --> pA = pi = &a --> *pA = a
// 하지만 여기서 차이점은, 이제 1byte로 바뀐 것.
//즉,입력받은 a의 값을 1byte 단위로 접근하고자 하는 것이다.
// ex) ++pA 를 하게 되면, 메모리 상에서 1byte 단위로 이동하게 된다.
char chA =*pA;// chA = *pA = a ,즉, chA는 a 값을 의미
int *pb = &b;
char *pB = (char*)&b;
char chB = *pB;
if(c=='+')
printf("두수의 합은 %02x입니다\n",chA+chB);
else if(c=='-')
printf("두수의 차는 %02x입니다\n",chA-chB);
else if(c=='*')
printf("두수의 곱은 %02x입니다\n",chA*chB);
else if(c=='/')
printf("두수의 나눗셈은 %02x입니다\n",chA/chB);
else
printf("연산식을 잘못 입력하셨습니다");
return 0;
}
윤성우의 열혈 자료구조:C언어를 이용한 자료구조 학습서
COUPANG
www.coupang.com
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음