✅ 아래 코드는 문제 없을까?

#include <stdio.h>

int main() {
	char a = 11;
	char b = 22;
	a = b;
	b = a;

	printf("a=%d\\r\\n", a);
	printf("b=%d\\r\\n", a);

	return (0);
}

당연히 문제가 없다.

a,b는 모두 char형으로, a=b, b=a 모두 적법하다.

✅ 아래 코드는 문제 없을까?

당연히 문제가 없다.

#include <stdio.h>

int main() {
	int a = 111;
	int b = 222;
	a = b;
	b = a;

	printf("a=%d\\r\\n", a);
	printf("b=%d\\r\\n", b);

	return (0);
}

✅ 아래 코드는 문제 없을까?

형이 다르면 원칙적으로 대입이 안되어야 되지만..

안되야 하는데 된다. (안돼야가 맞나.. 안되야가 맞나?)

#include <stdio.h>

int main(void) {
	int a = 11;
	int b = 22;
	char c = 33;

	int* pa = &a;
	int* pb = &b;
	char* pc = &c;

	printf("a=%d\\r\\n", a);
	printf("b=%d\\r\\n", b);
	printf("c=%d\\r\\n", c);

	*pa = *pb; // (1) ok 양쪽이 int, int 로써 형이 같다.
	*pb = *pa; // (2) ok 역시 적법하다.
	
	*pc = *pa; // (3) error? ok?
	*pa = *pc; // (4) error? ok?

	return (0);
}

(1),(2) 전혀 문제 없다

*pa의 연산결과의 형은 int다

int를 int에 대입, 양쪽의 형이 같음, 고로 문제 없다.