C 프로그래밍 언어 01 - 유형, 연산자 및 표현식

5488 단어
변수 및 상수
프로그램 두 가지 기본 데이터 대상
선언문
변수의 이름과 유형을 설명하거나 변수의 초기값을 지정할 수 있습니다
연산자
수행할 작업 지정
표현식
변수와 상수를 조합하여 새로운 값을 만들다
타입
객체의 유형에 따라 해당 객체의 값을 얻을 수 있는 컬렉션과 해당 객체에 대해 수행할 수 있는 작업이 결정됩니다.

0x0 변수 이름


변수 이름과 상수 이름의 제한
  • 문자와 숫자로 구성되지만 첫 번째 문자는 문자여야 합니다.""알파벳으로 간주
  • 대소문자 구분, 일반 변수 이름 소문자, 상수명 크기
  • 내부명은 최소 31개의 문자가 유효하고 외부 변수명은 6개의 문자만 유일하며 대소문자를 구분하지 않는다
  • 키워드는 변수 이름으로 사용할 수 없음
  • 0x1 데이터 유형 및 길이


    C 기본 데이터 유형

  • char 문자형, 1바이트 차지
  • int정형은 일반적으로 사용하는 기계의 정수의 가장 자연스러운 길이를 반영한다
  • float 단정밀도 부점형
  • 더블 정밀도 부점형
  • 기장


    short는 보통 16자리, 롱 형식은 32자리, int 형식은 16자리 또는 32자리입니다.
    원칙: 16위 <=short <= int <= long, long>= 32위

    한정 부호


    short, long 한정 정수, 예: short int sh;long int counter;
    int 생략 가능

    유형 한정자


    signed, unsigned는char 형식이나 모든 정형을 제한하는 데 사용할 수 있습니다.unsigned 형식의 수는 항상 정수나 0입니다.
    한정 문자가 없는char 유형의 대상이 기호를 가지고 있는지 여부는 구체적인 기계에 달려 있다.
    long double 유형은 고정밀의 부동점수를 나타냅니다.

    0x2 상수


    정수 상수


    long 유형의 상수는 알파벳 l 또는 L로 끝납니다.
    부호가 없는 상수는 u 또는 U로 끝납니다. 접미사 l 또는 UL은 unsigned long 형식을 나타냅니다.
    접두사 0(숫자 0)이 있는 정수 상수는 8진수이고 접두사 0x 또는 0X는 16진수 형식이다.

    부동 소수점 상수


    부동 소수점 상수에는 소수점이나 지수가 포함되어 있다.
    접미사가 없는 부동점수 상수는 보통 더블 형식이고 접미사 f 또는 F는float 형식을 표시합니다.

    문자 상수


    문자 상수는 정수로서, 'x' 와 같은 작은 인용부호에 문자를 넣는다.
    기계 문자에 문자가 집중된 수치는 문자 상수의 값이다.
    문자 상수는 다른 정수와 같이 수치 연산에 참여할 수 있다.
    일부 문자는 이스케이프 시퀀스를 통해 문자와 문자열 상수로 표시할 수 있습니다.
    문자 상수'\0'은 값이 0인 문자, 즉 빈 문자(null)를 나타냅니다.
    상수 표현식은 상수만 포함하는 표현식으로 컴파일할 때 값을 구하면 상수가 나타날 수 있는 임의의 위치에 나타날 수 있다.

    문자열 상수


    문자열의 글자 양이라고도 하는데, 더블 인덱스로 구성된 0 개 이상의 문자로 구성된 문자열이다.
    컴파일할 때 여러 문자열의 상수를 연결합니다. 예를 들어 "Hello", "World"는 "Hello World"와 같습니다.
    문자열의 상수는 문자열의 배열로 문자열의 내부는 빈 문자'\0'을 문자열의 끝으로 사용하기 때문에 문자열을 저장하는 물리적 저장 단원수는 실제 저장된 문자수보다 하나 많다.

    매거 상수


    매거는 상수 정형 값의 목록이다
    enum boolean { NO, YES};
    

    설명이 표시되지 않았습니다. enum 형식의 첫 번째 매거진의 값은 0이고, 두 번째 매거진의 값은 1입니다. 이런 식으로 추정됩니다. 일부 매거진의 값만 지정하면, 지정하지 않은 매거진의 값은 마지막 지정한 값에서 뒤로 증가합니다.
    enum escapes { BELL = '\a', BACKSPACE = '\b', 
        TAB = '\t', NEWLINE = '
    ', VTAB = '\v', RETURN = '\r' }; enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };

    0x3 선언


    모든 변수는 먼저 성명한 후에 사용해야 하며, 하나의 성명은 하나의 변수 유형을 지정하고, 한 번에 여러 변수를 성명할 수 있다.
    int lower, upper, step;
    char c, line[1000];
    

    변수 선언 시 동시에 초기화 가능
    char esc = '\\';
    

    기본적으로 외부 변수와 정적 변수는 0으로 초기화됩니다. 초기화되지 않은 자동 변수의 값은 정의되지 않습니다(잘못된 값).
    모든 변수의 성명은const한정부호를 사용하여 한정할 수 있으며 변경량의 값이 수정될 수 없음을 나타냅니다.수조에 대해 말하자면, const 한정자는 수조의 모든 요소의 값을 수정할 수 없습니다.
    const double e = 2.32342343;
    const char msg[] = "Hello";
    
    int strlen(const char[]); // 
    

    0x4 산술 연산자


    이원 산술 연산자: +,-,*,/,%.정수 나누기는 결과의 소수 부분을 절단할 수 있다.
    플로트와 더블 형식에 사용할 수 없습니다.
    우선순위: +,-<*,/,%<+,-( )산술 연산자는 왼쪽에서 오른쪽까지의 결합 규칙을 채택한다

    0x5 관계 및 논리 연산자


    관계 연산자: >,>=,
    동일성 연산자:=,!=,관계 연산자보다 우선 순위가 낮음
    관계 연산자의 우선순위는 산술 연산자보다 낮다
    논리 연산자: & &, |, & & 비 | | 우선순위가 높고 관계 연산자와 상등성 연산자의 우선순위보다 낮습니다.
    괄호를 사용하여 연산 우선 순위 제어
    논리적 표현식에서 관계가 진실이면 표현식 결과 값이 1이고 가짜면 결과 값이 0이다.
    논리 비 연산자!0이 아닌 작업수를 0으로 변환하고 0이 아닌 작업수를 1로 변환합니다.

    0x6 유형 변환


    하나의 연산자의 몇 개의 조작수 유형이 같지 않으면, 몇 가지 규칙을 통해 그것들을 특정한 공통된 유형으로 전환해야 한다.
    자동 변환은 "좁은"작업수를 "넓은"작업수로 변환하고 정보를 잃어버리지 않습니다.
    C 언어에서char 형식의 변수가signed인지 unsigned인지 지정하지 않았습니다. 기계의 표준 인쇄 문자가 음수가 아닌 문자만 보장합니다.char 형식의 변수에 비 문자 데이터를 저장하려면signed나 unsigned 한정자를 지정하는 것이 좋습니다.
    signed와 unsigned 값 간의 비교 연산은 기계와 관련된 것이다. 왜냐하면 기계의 서로 다른 정형 유형의 크기에 달려 있기 때문이다.
    값을 부여할 때도 형식 변환을 해야 하며, 값 연산자 오른쪽의 값은 왼쪽 변수의 형식으로 변환해야 한다.
    함수 호출의 매개 변수는 표현식이기 때문에 매개 변수를 함수에 전달할 때도 유형 변환을 할 수 있다.함수 원형이 없을 때char와short 형식은 int 형식으로 변환되고float 형식은 더블 형식으로 변환됩니다.
    강제 유형 변환
    ( )  
    

    0x7 자동 증가 및 자동 감소 연산자


    증가 연산자++, 감소 연산자 -- 작업 수를 1씩 증가 또는 감소하며 변수에만 사용할 수 있습니다.
  • 접두사: 우선 값을 1씩 증가/감소하고 이 값을 사용합니다
  • 접미사: 먼저 이 값을 사용한 다음에 값을 증가/감소한다
  • 0x8 비트 연산자


    C는 6비트 연산자를 제공합니다.이 연산자는 정형 조작수에만 작용할 수 있다.
  • & 비트별(AND)
  • | 비트별 또는 (OR)
  • ^ 비트별 또는 (XOR)
  • <<왼쪽 이동
  • >> 오른쪽으로
  • ~비트에 따라 반(일원 연산자)
  • 0x9 대입 연산자 및 표현식


    대입 연산자는 일종의 줄임말로 대입 연산자는 한 번만 계산한다
    expr1 op= expr2   expr1 = (expr1) op (expr2)
     : +=, -=, *=, /=, %=  
    

    값 부여 표현식의 유형은 왼쪽 조작수의 유형이고, 그 값은 값 부여 작업이 끝난 후의 값이다.

    0xA 조건식

    expr1 ? expr2 : expr3
    

    0xB 연산자 우선 순위 및 값 구하기 순서


    연산자
    결합성
    () [] -> .
    왼쪽에서 오른쪽으로
    ! ~++ -- + - * (type) sizeof
    오른쪽에서 왼쪽으로
    */%
    왼쪽에서 오른쪽으로
    + -
    왼쪽에서 오른쪽으로
    << >>
    왼쪽에서 오른쪽으로
    <<= >>=
    왼쪽에서 오른쪽으로
    == !=
    왼쪽에서 오른쪽으로
    &
    왼쪽에서 오른쪽으로
    ^
    왼쪽에서 오른쪽으로
    |
    왼쪽에서 오른쪽으로
    &&
    왼쪽에서 오른쪽으로
    ||
    왼쪽에서 오른쪽으로
    ?:
    왼쪽에서 오른쪽으로
    = += -= *=/= &= ^= != <<= >>=
    오른쪽에서 왼쪽으로
    ,
    오른쪽에서 왼쪽으로
    함수 매개 변수, 1원 연산자의 여러 조작수의 계산 순서 등 우선순위를 정할 수 없는 용법에 의존하지 마라.

    좋은 웹페이지 즐겨찾기