검수요청.png검수요청.png

연산문

위키원
dudrb0106 (토론 | 기여)님의 2021년 8월 24일 (화) 08:49 판 (단항)
이동: 둘러보기, 검색

연산문이란 프로그램 언어에서 프로그램의 단위가 되는 문의 종류의 하나이다. 연산문은 사칙연산이나 지수의 연산 실행을 지정하는 명령문이다.[1]

개요

연산문은 대부분의 다른 언어보다 더 일반적 강력하며 C언어의 기본요소인 자료(data)와 연산자(operator)로 구성되며 이때 자료는 변수 또는 상수이다. 이 둘을 조합하고 프로그램으로 작성한 프로그래밍을 연산문이라고 하며 연산자와 같이 여러종류의 연산문으로 구성되어 있다.

종류

연산문에는 여러 종류가 있지만 산술, 관계, 논리, 비트, 기타등 의 연산자와 변수들을 이용한 연산문이 대표적이다.

산술

산술 연산문은 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 등의 연산을 할 때 사용되는 연산자로 단항, 이항, 대입으로 나타낸 문장으로 계산식과 결과 값은 다음과 같다. [2]

이항

덧셈, 뺄셈, 곰셈, 나눗셈, 나머지를 작성한 연산문이다.

  • C언어 예시
int num01 = 10;
int num02 = 4;  
printf("+ 연산자에 의한 결괏값은 %d입니다.\n", num01 + num02);
printf("- 연산자에 의한 결괏값은 %d입니다.\n", num01 - num02);
printf("* 연산자에 의한 결괏값은 %d입니다.\n", num01 * num02);
printf("/ 연산자에 의한 결괏값은 %d입니다.\n", num01 / num02);
printf("% 연산자에 의한 결괏값은 %d입니다.\n", num01 % num02);
+ 연산자에 의한 결괏값은 14입니다.
- 연산자에 의한 결괏값은 6입니다.
* 연산자에 의한 결괏값은 40입니다.
/ 연산자에 의한 결괏값은 2입니다.
% 연산자에 의한 결괏값은 2입니다. [3]
  • 자바 예시
public class Error 
{
    public static void main(String args[])
    {
        byte a = 10;
        byte b = 20;
 
        //byte c = a + b; 일경우 a, b 모두 int 형으로 변환 되어 연산 되기 때문에 에러 발생.
        byte c = (byte)(a + b);    // 형변환을 통해 byte 데이터 타입으로 바꿔주고 계산해야 한다. 
        
        System.out.println(c);
 
    }
}
실행 결과 : 30[4]

단항

대표 단항식 : 증감식이며 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산이고 다음과 같이 쓰여저있다.

  • C언어 증감식
#include <stdio.h>

int main()
{
    int num1 = 2;
    int num2 = 2;
    int num3;
    int num4;

    num3 = num1++;    // num1의 값을 num3에 할당한 뒤 num1의 값을 1 증가시킴
    num4 = num2--;    // num2의 값을 num4에 할당한 뒤 num2의 값을 1 감소시킴

    printf("%d %d\n", num3, num4);    // 2 2

    return 0;
}
실행 결과 : 2 2[5]
  • 자바 증감식
public class Operator {
 
    public static void main(String[] args) {
        //증감 연산자의 독립 사용이 아닐 때
        
        int i = 1, j = 0;
        
        j = i++; // 연산 과정 : 1] j = i를 실행, 2] i를 1 증가 
        System.out.printf("j = i++의 결과 : i=%d, j=%d%n",i,j);
        
        i = 1;
        j = 0;
        j = ++i; // 연산 과정 : 1] i를 1증가, 2] j = i를 실행
        System.out.printf("j = ++i의 결과 : i=%d, j=%d%n",i,j);
        
        i = 1;
        j = 0;
        j = i--; // 연산 과정 : 1] j = i를 실행, 2] i를 1 감소 
        System.out.printf("j = i--의 결과 : i=%d, j=%d%n",i,j);
        
        i = 1;
        j = 0;
        j = --i; // 연산 과정 : 1] i를 1감소, 2] j = i를 실행
        System.out.printf("j = --i의 결과 : i=%d, j=%d%n",i,j);        
                        
    }//main    

}//class
j = i++의 결과 : i=2, j=1

j = ++i의 결과 : i=2, j=2

j = i--의 결과 : i=0, j=1

j = --i의 결과 : i=0, j=0[6]

대입

'=’는 오른쪽 계산식의 결과나 값을 왼쪽의 변수에 대입 하라는 의미로 사용되며 다음과 같이 사용한다.

  • C언어 예시
#incoude <stdio.h> 
main () 
{ 
int a = 3; a = a + 3; a = a – 3; // =, +, – 
a = a * 3; a = a / 3; a = a % 3; // *, /, % 
printf ( '% d \ n', a); 
}
실행 결과 : 0[7]
  • 자바 예시
package sec01_exam;
 
public class AsOpEx {
 
    public static void main(String[] args) {
        
        
        int result = 0;
        // 복합 대입 연산자는 값을 누적시킬때 많이 사용된다.
        
        result += 10;
        System.out.println("result =  " + result); //  result 에 10을 더한다.
        // reuslt = result + 10; 이랑 같다
        
        result -= 5;
        System.out.println("result = " + result );
        
        result *= 3;
        System.out.println("result = " + result );
        
        result /= 5;
        System.out.println("result = " + result );
        
        result %= 3;
        System.out.println("result = " + result );
        
        
    }
 
}
실행 결과 : result = 10
result = 5
result = 15
result = 3
result = 0[8]

관계

두 식의 대소 크기를 비교하는 연산자로서 연산 결과가 참(true)이나 거짓(false)으로 표현한다.[2]

  • C언어 예제
#include <stdio.h>

int main()
{
 int a = 6;
 int b = 4;

 printf("%d \n",a < b); //a 가 b 보다 작은가
 printf("%d \n",a <= b);//a 가 b 보다 작거나 같은가
 printf("%d \n",a > b); //a 가 b 보다 큰가
 printf("%d \n",a >= b);//a 가 b 보다 크거나 같은가
 printf("%d \n",a == b);//a 와 b 가 같은가 
 printf("%d \n",a != b);//a 와 b 가 다른가

 return 0;
}
실행 결과 : 0
0
1
1
0
1[9]
  • 자바 예시
package sec01_exam;
 
public class CompareOpEx {
 
    public static void main(String[] args) {
        
        int num1 = 10;
        int num2 = 10;
        
        boolean result1 = (num1 == num2); //true
        boolean result2 = (num1 != num2); // false
        boolean result3 = (num1 <= num2); // true
        
        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
    }
}
실행 결과 : true
false
true[10]

논리

논리 연산문은 논리합(OR), 논리곱(AND), 논리부정(NOT) 등의 연산을 할 때 사용하는 연산자를 사용한 연산문으로 다음과 같이 사용한다.[2]

  • C언어 예시
#include <stdio.h>
 
int main()
{
    int num1 = 20;
    int num2 = 10;
    int num3 = 30;
    int num4 = 15;
 
    printf("%d\n", num1 > num2 && num3 > num4);    // 1: 양쪽 모두 참이므로 참
    printf("%d\n", num1 > num2 && num3 < num4);    // 0: 앞만 참이므로 거짓
    
    printf("%d\n", num1 > num2 || num3 < num4);    // 1: 앞만 참이므로 참
    printf("%d\n", num1 < num2 || num3 < num4);    // 0: 양쪽 모두 거짓이므로 거짓
 
    printf("%d\n", !(num1 > num2));    // 0: 참의 NOT은 거짓
 
    return 0;
}
실행 결과 : 1
0
1
0
0[11]
  • 자바 예제
public class LogicalOpTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "Y";
        if ( str == "Y" || str == "y" ) {   // 참 또는 거짓 = 참
            System.out.println("str 은 Y 이거나 y 입니다.");
        }
        
        String str2 = "n";
        if ( str == "A" || str2 == "n" ) {  // 거짓 또는 참 = 참
            System.out.println("str 은 A 이거나 Str2는 n 입니다.");
        }
        
        String str3 = "T";
        if ( str3 == "T" && str3 == "t" ) { // 참 그리고 거짓 = 거짓
            System.out.println("str3 은 T 이며 t 입니다.");
        }
        
        String str4 = "Q";
        String str5 = "q";
        if ( str4 == "Q" && str5 == "q" ) { // 참 그리고 참 = 참
            System.out.println("str4 는 Q 이고, str5 는 q 입니다.");
        }
    }
}
실행 결과 : str 은 Y 이거나 y 입니다.
str2 는 N 이거나 n 입니다.
str4 는 Q 이고 str5는 q 입니다.[12]

비트

비트 연산문은 비트 단위로 논리 연산을 수행하는 연산자드을 이용한 연산문이다.[2]

  • C언어 예시
#include <stdio.h>
 
int main()
{
    unsigned char flag = 0;
 
    flag |= 1;    // 0000 0001 마스크와 비트 OR로 여덟 번째 비트를 켬
    flag |= 2;    // 0000 0010 마스크와 비트 OR로 일곱 번째 비트를 켬
    flag |= 4;    // 0000 0100 마스크와 비트 OR로 여섯 번째 비트를 켬
 
    printf("%u\n", flag);    // 7: 0000 0111
 
    if (flag & 1)    // & 연산자로 0000 0001 비트가 켜져 있는지 확인
        printf("0000 0001은 켜져 있음\n");
    else
        printf("0000 0001은 꺼져 있음\n");
 
    if (flag & 2)    // & 연산자로 0000 0010 비트가 켜져 있는지 확인
        printf("0000 0010은 켜져 있음\n");
    else
        printf("0000 0010은 꺼져 있음\n");
 
    if (flag & 4)    // & 연산자로 0000 0100 비트가 켜져 있는지 확인
        printf("0000 0100은 켜져 있음\n");
    else
        printf("0000 0100은 꺼져 있음\n");
 
    return 0;
}
실행 결과 : 7
0000 0001은 켜져 있음
0000 0010은 켜져 있음
0000 0100은 켜져 있음[13]
  • 자바 예제
public class bit {
    public static void main(String[] args) {

        int a = 9;
        int b = 11;

        System.out.println(Integer.toBinaryString(a)); //바이너리로 변환
        System.out.println(Integer.toBinaryString(b)); //바이너리로 변환
        System.out.println("10진수 : " + (a & b));
        System.out.println("2진수 : " + Integer.toBinaryString(a & b));

    }
}
실행 결과 : 1001
1011
10진수 : 9
2진수 : 1001[14]

각주

  1. 연산문〉, 《네이버 지식백과》
  2. 2.0 2.1 2.2 2.3 홍수열, 〈연산자(operator)〉, 《동주대학》,
  3. 산술 연산자〉, 《티시피스쿨》
  4. 너구리해적단, 〈자바(Java)의 기초 박살내기 - 연산자(Operator)〉, 《티스토리》, 2017-06-30
  5. 증감 연산자의 위치에 따른 차이점 알아보기〉, 《코딩도장》
  6. 냉유's Log, 〈(Java 16) 증감 연산자, 조건 연산자〉, 《티스토리》, 2017-11-26
  7. life knowledge, 〈연산자(대입, 산술)〉, 《오픈튜토리얼스》, 2019-01-22
  8. 뇌 채우기 공간, 〈(자바JAVA) 연산자 - 복합대입연산자〉, 《티스토리》, 2020-09-16
  9. 나노콛, 〈C언어 관계 연산자 / 논리 연산자 / 대입 연산자〉, 《티스토리》, 2019-07- 18
  10. 뇌 채우기 공간, 〈(자바JAVA) 연산자 - 자바 관계 연산자〉, 《티스토리》, 2020-09-17
  11. 조건식과 논리 연산자 사용하기〉, 《코딩도장》
  12. omputer Language/JAVA, 〈(JAVA) 자바 논리 연산자를 사용하여 IF문 OR, AND 조건 사용하기〉, 《티스토리》, 2020-11-01
  13. 비트 연산자로 플래그 처리하기〉, 《코딩도장》
  14. ikhub vmpo, 〈(알고리즘) java 비트연산 정리하기〉, 《티스토리》, 2020-03-21

참고자료

같이 보기


  검수요청.png검수요청.png 이 연산문 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.