[펌] 아스키(Ascii) 코드표
[펌] C/C++연산자 - 우선순위와 연산방향
출처 - http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=714
이 강좌에서는 C/C++ 에서 사용하는 연산자의 우선 순위와 결합 법칙에 대하여 알아보도록 하겠습니다.
순위 |
종류 |
연산자 |
연산 방향 |
1 |
괄호, 배열, 구조체 | ( ) . [ ] -> :: |
좌→우 |
2 |
단항 연산자 | *(간접) &(주소) ! - ++ -- +(부호) -(부호) sizeof new delete |
우→좌 |
3 |
구조체 결합연산자 | .* ->* |
좌→우 |
4 |
승제 연산자 | * / % |
좌→우 |
5 |
가감 연산자 | + - |
좌→우 |
6 |
시프트(Shift) 연산자 | << >> |
좌→우 |
7 |
비교 연산자 | < <= > >= |
좌→우 |
8 |
등가 연산자 | == != |
좌→우 |
9 |
비트 연산자 AND | & |
좌→우 |
10 |
비트 연산자 XOR | ^ |
좌→우 |
11 |
비트 연산자 OR | | |
좌→우 |
12 |
논리 연산자 AND | && |
좌→우 |
13 |
논리 연산자 OR | || |
좌→우 |
14 |
조건 연산자 | ?: |
우→좌 |
15 |
대입 연산자 | = *= /= += -= %= <<= >>= &= ^= |= |
우→좌 |
16 |
나열 연산자 | , |
좌→우 |
[펌] C언어 union
공용체 (union) |
사실 공용체(union)는 그다지 많이 사용하는 기능은 아닙니다만, 그래도 C 언어에서 제공하는 것들 중 하나 이니 간단하게 나마 집고 넘어가도록 합시다. 공용체는 구조체와는 달리 메모리를 ‘공유’ 합니다. 이게 도대체 무슨 말인가 하면 아래 그림을 참조해주세요.
위 그림을 보아도 알 수 있듯이 공용체의 각 멤버들의 메모리 시작 주소는 모두 동일합니다. 따라서 우리는 위 그림의 union A 의 경우 j 의 값을 변경함으로 써 i 의 값을 변경할 수 있고 마찬가지로 i 의 값을 변경함으로써 j 의 값을 변경할 수 있게 됩니다. 과연 이 말이 진짜 인지 확인해 보도록 합시다.
/* 공용체 */
#include <stdio.h>
union A
{
int i;
char j;
};
int main()
{
union A a;
a.i = 0x12345678;
printf("%x", a.j);
return 0;
}
성공적으로 컴파일 했다면
음. 과연 우리는 a 의 j 멤버 값을 전혀 설정해 주지 않았음에도 불구하고 i 에 0x12345678 을 대입하자 j 의 값이 78 로 잘 나왔습니다. 그런데 이상한 점이 듭니다. 왜 78 이 나왔을 까요? 0x12 가 나와야 되는 것 아닌가요? 분명히 i 와 j 에 동일한 주소값에 위치해 있고 i 가 0x12345678 로 메모리 상에 있다면 j 는 처음 두 개인 0x12 가 되어야 되는 것 아닌가요? 물론, 여러분의 생각은 옳습니다. 하지만 컴퓨터에서는 수를 이렇게 보관하지 않습니다. 적어도 여러분의 컴퓨터에서는요.
출처 http://itguru.tistory.com/71