C 언어
C 연산자는 피연산자에 연산을 수행하는 기호입니다. 6대 분류와 우선순위, 결합 법칙을 표로 정리하고 실수하기 쉬운 포인트를 짚습니다.
| 연산자 | 이름 | 예시 (A=10, B=3) | 결과 |
|---|---|---|---|
+ | 덧셈 | A + B | 13 |
- | 뺄셈 | A - B | 7 |
* | 곱셈 | A * B | 30 |
/ | 나눗셈 | A / B | 3 (정수 나눗셈: 버림) |
% | 나머지 (모듈로) | A % B | 1 |
++ | 전위/후위 증가 | ++A / A++ | 11 / 10(후 값 11) |
-- | 전위/후위 감소 | --A / A-- | 9 / 10(후 값 9) |
주의: 정수 나눗셈은 0 방향으로 절삭. 음수 나머지 부호는 피제수(왼쪽) 따름 (C99부터).
| 연산자 | 의미 | 예시 (A=5, B=10) |
|---|---|---|
== | 같음 | A == B → 0 |
!= | 다름 | A != B → 1 |
> | 보다 큼 | A > B → 0 |
< | 보다 작음 | A < B → 1 |
>= | 크거나 같음 | A >= B → 0 |
<= | 작거나 같음 | A <= B → 1 |
| 연산자 | 이름 | 동작 | 예시 (A=1, B=0) |
|---|---|---|---|
&& | 논리 AND | 왼쪽 거짓이면 오른쪽 평가 안 함 | A && B → 0 |
|| | 논리 OR | 왼쪽 참이면 오른쪽 평가 안 함 | A || B → 1 |
! | 논리 NOT | 0→1, 0아닌값→0 | !A → 0 |
if (ptr != NULL && ptr->data > 0) // ptr NULL이면 뒤 평가 안 함 → 안전 if (x > 0 || (y = compute()) > 0) // x>0이면 compute() 호출 안 함
| 연산자 | 이름 | 동작 | 예시 (A=12=1100, B=10=1010) |
|---|---|---|---|
& | 비트 AND | 둘 다 1이면 1 | A & B = 8 (1000) |
| | 비트 OR | 둘 중 하나 1이면 1 | A | B = 14 (1110) |
^ | 비트 XOR | 서로 다르면 1 | A ^ B = 6 (0110) |
~ | 비트 NOT (보수) | 비트 반전 | ~A = -13 (보수 표현) |
<< | 왼쪽 시프트 | 왼쪽으로 이동, 오른쪽 0 채움 | A << 2 = 48 (110000) |
>> | 오른쪽 시프트 | 오른쪽 이동, 부호비트 복사(산술) 또는 0 채움(논리) | A >> 2 = 3 (0011) |
// 비트 설정 flags |= (1 << n); // n번째 비트 1로 // 비트 클리어 flags &= ~(1 << n); // n번째 비트 0으로 // 비트 토글 flags ^= (1 << n); // n번째 비트 반전 // 비트 검사 if (flags & (1 << n)) ... // n번째 비트가 1인가? // 최하위 1비트 분리 x & (-x) // 2의 보수 활용 // 2의 거듭제곱 판별 (x & (x - 1)) == 0 // x > 0 가정
| 연산자 | 예시 | 동등 표현 | |
|---|---|---|---|
= | a = b | - | |
+= | a += b | a = a + b | |
-= | a -= b | a = a - b | |
*= | a *= b | a = a * b | |
/= | a /= b | a = a / b | |
%= | a %= b | a = a % b | |
<<= | a <<= b | a = a << b | |
>>= | a >>= b | a = a >> b | |
&= | a &= b | a = a & b | |
^= | a ^= b | a = a ^ b | |
|= | a |= b | a = a | b |
| 연산자 | 이름 | 설명 | 예시 |
|---|---|---|---|
sizeof | 크기 연산자 | 피연산자 타입/표현식 크기(바이트), 컴파일 타임 | sizeof(int), sizeof x |
& | 주소 연산자 | 변수 메모리 주소 반환 (lvalue만 가능) | &x |
* | 간접 참조 | 포인터가 가리키는 값 접근 | *p |
? : | 조건 연산자 (삼항) | 조건 ? 참값 : 거짓값, 표현식임 | max = (a>b)?a:b; |
, | 콤마 연산자 | 왼쪽 평가 후 오른쪽 평가, 값은 오른쪽 | i=0, j=1 → 1 |
. -> | 멤버 접근 | 구조체/공용체 멤버 접근 | s.member, p->member |
[] | 배열 인덱스 | a[i] ≡ *(a+i) | arr[3] |
() | 함수 호출 | 함수 실행, 인자 전달 | func(1,2) |
(type) | 캐스트 | 강제 타입 변환 | (double)x |
| 순위 | 범주 | 연산자 | 결합 |
|---|---|---|---|
| 1 | 후위 | () [] . -> ++ -- | 왼→오 |
| 2 | 단항 | ++ -- + - ! ~ (type) * & sizeof | 오→왼 |
| 3 | 곱셈류 | * / % | 왼→오 |
| 4 | 덧셈류 | + - | 왼→오 |
| 5 | 시프트 | << >> | 왼→오 |
| 6 | 관계 | < <= > >= | 왼→오 |
| 7 | 등가 | == != | 왼→오 |
| 8 | 비트 AND | & | 왼→오 |
| 9 | 비트 XOR | ^ | 왼→오 |
| 10 | 비트 OR | | | 왼→오 |
| 11 | 논리 AND | && | 왼→오 |
| 12 | 논리 OR | || | 왼→오 |
| 13 | 조건 | ? : | 오→왼 |
| 14 | 대입 | = += -= *= /= %= &= ^= |= <<= >>= | 오→왼 |
| 15 | 콤마 | , | 왼→오 |
// 의도: a = (b + c) * d a = b + c * d; // 실제: a = b + (c * d) ✗ a = (b + c) * d; // 괄호로 명시 ✓ // 비트 연산자 우선순위가 비교/논리보다 낮음 if (flags & MASK == 0) // 실제: flags & (MASK == 0) ✗ if ((flags & MASK) == 0) // 괄호 필수 ✓
복잡한 표현식은 괄호로 우선순위 명시 (가독성 + 버그 방지)
부호 있는 정수 오버플로는 미정의 동작(UB) → <stdint.h> 타입과 검사 로직 사용
시프트 연산: 음수 시프트, 폭 이상 시프트는 UB
대입을 조건문에 쓰지 말기: if (a = b) → if ((a = b) != 0) 또는 분리
sizeof 피연산자엔 부작용 있는 표현식 쓰지 말기 (평가 안 될 수 있음)
C 언어
생산성은 건설사와 현장 관리자의 최대 관심사입니다. 생산성 저하는 곧 수익 감소, 중요 마일스톤 지연, 향후 수주 기회 상실로 이어집니다. 다행히 현장 생산성을 높일 수 있는 구체적인 방안들이 있습니다. 다음 전략들로 작업자와 장비의 잠재력을 최대한 끌어올리세요. 1. 운전자 교육 장비 효율은 운전자 역량에 달렸습니다. 교육 전략이 잘 작동하는지 판단하기란 쉽지 않습니다. 숙련된 효율적 팀원과의 현장 교육(OJT)은 신입이 기초를 익히는 좋은 방법입니다. 하지만 회사가 성장하면 그 수준만으로는 지속적인 고생산성 유지가 어렵습니다.
Haas 밀링 매뉴얼CNC 머시니스트는 Haas 웹사이트에서 Haas 밀링 매뉴얼을 무료로 다운로드할 수 있습니다.Haas 밀링 매뉴얼에는 전체 CNC 운영 및 프로그래밍 세부 사항이 포함되어 있습니다.CNC 머시니스트는 Haas 선반 매뉴얼도 다운로드할 수 있습니다: Haas CNC 선반 매뉴얼 무료 다운로드Haas 밀링 매뉴얼 – 운영자 및 프로그래밍Haas 밀링 매뉴얼 다운로드Haas 밀링 매뉴얼 Haas 웹사이트 (PDF).Haas 밀링 매뉴얼 목차안전기계 안전모범 사례경고 데칼소개기계 개요컨트롤 설명옵션 설명운영일반 운영프