이러한 세 가지 방법은 서로 다른 상황에서 적합하며 다양한 절충안이 있습니다. 예를 들어 정적 메모리 할당에는 할당 오버헤드가 거의 없으며, 자동 할당에는 약간 더 많은 오버헤드가 포함될 수 있으며 동적 메모리 할당은 할당 및 할당 할당 모두에 대해 많은 오버헤드를 가질 수 있습니다. 정적 개체의 영구 특성은 함수 호출 전반에 걸쳐 상태 정보를 유지하는 데 유용하며 자동 할당은 사용하기 쉽지만 스택 공간은 일반적으로 정적 메모리 또는 힙 공간 및 동적 메모리보다 훨씬 제한적이고 일시적입니다. 할당을 사용하면 런타임에만 크기가 알려진 개체를 편리하게 할당할 수 있습니다. 대부분의 C 프로그램은 세 가지 를 광범위하게 사용합니다. 프로그래머는 변수를 선택하고 프로그램에서 사용할 변수의 유형을 결정해야 합니다. 대부분의 경우 결정은 직관적입니다. 예를 들어 계산및 정수에 정수 형식을 사용합니다. 소수 부분이 있는 숫자에 대한 부동 소수점 유형, 단일 문자에 대한 char 및 이진 결과에 대한 부울입니다. C 문자열은 ASCII 0과 동일한 «으로 표시된 null 문자로 종료되는 문자 배열입니다.

예를 들어 배열은 루프와 함께 작동합니다. 루프를 통해 배열의 모든 요소를 처리할 수 있습니다., 예를 들어, 그러나 두 피연산자가 서로 다른 형식에 속하는 경우 컴파일러는 더 큰 형식 (암시적 형식 캐스팅이라고 함)에 작은 형식의 값을 승격합니다. 그런 다음 더 큰 유형으로 작업을 수행합니다. 예를 들어, int/double → 더블/더블 → 더블. 따라서, 1/2 → 0, 1.0/2.0 → 0.5, 1.0/2 → 0.5, 1/2.0 → 0.5 → 0.5. Kernighan과 Ritchie는 C 프로그래밍 언어의 소개에서 말합니다: «C는 다른 언어와 마찬가지로 결점이 있습니다. 일부 연산자는 잘못된 우선 순위를 가지고 있습니다. 구문의 일부가 더 좋을 수 있습니다.» [21] C 표준은 이러한 변경 사항이 기존 소프트웨어에 미치는 영향 때문에 이러한 결점을 많이 수정하려고 시도하지 않았습니다. C는 연산자 = (평등을 표현하기 위해 수학에서 사용)을 사용하여 포트란과 PL / I의 선례에 따라 할당을 나타내지만 ALGOL 및 그 파생 상품과는 다릅니다. C는 연산자 ==를 사용하여 같음을 테스트합니다.

이 두 연산자 간의 유사성(할당 및 같음)은 다른 연산자 대신 실수로 하나를 사용할 수 있으며, 대부분의 경우 실수는 오류 메시지를 생성하지 않습니다(일부 컴파일러가 경고를 생성하더라도). 예를 들어 조건부 식 if(a==b+1)는 실수로 if(a=b+1)로 쓰여지며, 이는 할당 후 0이 아닌 경우 true로 평가됩니다. [24] 기본 기본 10정수 외에 접두사 `0`(0)을 사용하여 옥탈의 값을 나타내고, 헥사데임의 값에 대해 `0x`를 접두사하고, 이진 값(일부 컴파일러)에 대해 `0b`를 접두사 (예를 들어, 가능한 경우 자동 또는 정적 할당이 가장 간단합니다). 스토리지는 컴파일러에 의해 관리되므로 프로그래머는 잠재적으로 오류가 발생하기 쉬운 스토리지를 수동으로 할당하고 해제할 수 있는 집안일을 할 수 있습니다.