Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그래밍

  1. C/C++에서 int를 ASCII 코드로 변환하는 방법

    C와 C++에서는 문자 값이 내부적으로 ASCII 코드 값으로 저장됩니다. 따라서 정수(int)를 ASCII 코드로 변환하는 것은 매우 간단한데, 바로 문자 0의 ASCII 값에 해당 정수를 더해주면 됩니다.문자 0의 ASCII 값은 48입니다. 예를 들어 정수 5를 변환하면 48 + 5 = 53이 되고, 정수 8을 변환하면 48 + 8 = 56이 됩니다. 이 원리를 활용한 예제를 살펴보겠습니다.예제 코드#include<stdio.h> int intToAscii(int number) { return 0 + numb

  2. C 언어 printf에서 %p 형식 지정자의 역할과 사용법

    C 언어에는 다양한 형식 지정자(format specifier)가 존재합니다. 그중에서도 이번 글에서는 %p라는 형식 지정자에 대해 알아보겠습니다.%p는 포인터(pointer) 타입의 데이터를 출력할 때 사용되는 형식 지정자입니다. 포인터 변수가 담고 있는 메모리 주소 값을 화면에 표시해야 할 때 유용하게 활용됩니다.아래 예제를 통해 %p의 동작 방식을 더 자세히 살펴보겠습니다.예제 코드#include<stdio.h> main() {    int x = 50;    int *ptr =

  3. C/C++에서 %p와 %x 형식 지정자의 차이점 완벽 정리

    %p와 %x의 기본 역할C 또는 C++ 프로그래밍에서 %p는 포인터(메모리 주소) 값을 출력할 때 사용하고, %x는 정수를 16진수 형태로 출력할 때 사용합니다. 포인터 값은 %u나 %x로도 표시할 수 있기 때문에, 두 형식 지정자의 출력 결과가 비슷해 보일 수 있습니다.눈에 띄는 핵심 차이점동일한 값을 두 형식 지정자로 출력하면 큰 차이를 느끼지 못할 수 있습니다. 유일하게 확인할 수 있는 차이점은 다음과 같습니다.%p: 시스템의 포인터 크기에 맞춰 앞쪽을 0으로 채운(선행 0 padding) 형태로 출력합니다.%x: 불필요한 선

  4. C qsort()와 C++ sort() 완벽 비교: 어떤 정렬 함수를 써야 할까?

    이 글에서는 C 언어의 qsort() 함수와 C++의 sort() 함수가 어떻게 다른지 자세히 살펴보겠습니다. 두 함수 모두 배열을 정렬하는 데 사용되지만, 내부 동작 방식, 성능, 안전성 측면에서 중요한 차이점이 있습니다. C의 qsort() 함수 C 표준 라이브러리는 qsort() 함수를 제공하여 배열을 정렬할 수 있습니다. 이 함수의 원형과 매개변수 구조는 다음과 같습니다. void qsort(void *base, size_t num, size_t size, int (*comparator) (const void*, const

  5. C/C++ ldexp() 함수 완벽 가이드: 사용법과 예제 코드

    이번 글에서는 C와 C++에서 ldexp() 함수가 어떤 용도로 사용되는지 자세히 알아보겠습니다. 이 함수는 주어진 값 x에 2의 exp 거듭제곱을 곱한 결과를 반환합니다. 즉, 수학적으로 표현하면 x × 2^exp를 계산하는 함수입니다. 인자로 두 개의 값을 받는데, 하나는 밑이 되는 실수 x이고, 다른 하나는 지수가 되는 정수 exp입니다.함수 문법ldexp() 함수는 오버로딩을 통해 여러 자료형을 지원하며, 기본 문법은 아래와 같습니다.float ldexp (float x, int exp) double ldexp (double

  6. C/C++ wcstoll() 함수 완벽 가이드 – 와이드 문자열을 long long 정수로 변환하기

    C/C++의 wcstoll() 함수는 와이드 문자열(wide character string)을 long long 정수로 변환하는 데 사용됩니다. 이 함수는 마지막 유효 문자 다음에 오는 첫 번째 문자를 가리키도록 포인터를 설정하며, 숫자로 변환할 수 없는 부분이 어디서 시작되는지 파악할 때 유용합니다.wcstoll() 함수 문법long long wcstoll(const wchar_t* str, wchar_t** str_end, int base)wcstoll() 함수는 총 세 개의 인자를 받습니다.str: 변환을 시작할 와이드 문자열

  7. C/C++ 절댓값 함수 총정리: abs(), labs(), llabs() 사용법과 예제

    C++의 cstdlib 라이브러리에는 abs() 외에도 다양한 절댓값(absolute value) 계산 함수가 포함되어 있습니다. C 언어에서 abs()는 기본적으로 int 타입 입력에 사용되며, C++에서는 int, long, long long 타입까지 처리할 수 있습니다. 반면 labs()와 llabs()는 각각 long, long long 타입 데이터를 위해 제공되는 전용 함수입니다.이 글에서는 세 가지 함수의 문법과 실제 사용 예제를 통해 차이점을 자세히 살펴보겠습니다.1. abs() 함수abs() 함수는 int 타입 데이터

  8. C 함수의 인수와 반환값 – 네 가지 유형으로 이해하기

    C 프로그래밍에서 함수는 크게 두 가지 기준으로 분류할 수 있습니다. 하나는 인수(매개변수)를 전달받는지 여부이고, 다른 하나는 값을 반환하는지 여부입니다. 함수는 인수를 받을 수도 있고 아무것도 받지 않을 수도 있으며, 마찬가지로 어떤 값을 반환할 수도 있고 아무것도 반환하지 않을 수도 있습니다. 이 두 가지 기준을 조합하면 C 함수를 다음과 같은 네 가지 유형으로 나눌 수 있습니다. 인수가 없고 반환값도 없는 함수 인수는 없지만 값을 반환하는 함수 인수를 받지만 아무것도 반환하지 않는 함수 인수를 받고 값도 반환하는 함수 1

  9. C 언어 kbhit() 함수 완벽 정리: 키보드 입력 감지 방법

    C 언어에서 kbhit() 함수를 사용하면 키보드 입력이 발생했는지 실시간으로 확인할 수 있습니다. kbhit은 Keyboard Hit(키보드 히트)의 약자로, 이름 그대로 키가 눌렸는지를 감지하는 기능을 수행합니다.이 함수는 conio.h 헤더 파일에 선언되어 있으므로, 사용하려면 반드시 해당 헤더 파일을 소스 코드에 포함해야 합니다.kbhit() 함수의 동작 원리kbhit() 함수의 동작 방식은 매우 간단합니다.키가 눌린 경우: 0이 아닌 값(nonzero)을 반환합니다.키가 눌리지 않은 경우: 0을 반환합니다.이러한 특성 덕분

  10. C 언어에서 입력 문자가 알파벳, 숫자 또는 특수 문자인지 확인하는 방법

    이번 글에서는 C 언어에서 사용자가 입력한 문자가 알파벳, 숫자, 아니면 특수 문자인지 판별하는 방법을 알아보겠습니다.판별 기준은 매우 간단합니다. 알파벳은 대문자 A~Z와 소문자 a~z 범위에 해당하고, 숫자는 0~9 범위에 속합니다. 그리고 이 두 범위에 포함되지 않는 나머지 모든 문자는 특수 문자로 분류됩니다. 따라서 이 조건들을 순서대로 검사하기만 하면 입력된 문자의 종류를 쉽게 확인할 수 있습니다.예제 코드#include <stdio.h> #include <conio.h> main() {  

  11. C언어에서 sizeof() 안에 작성된 코드는 실행되지 않습니다

    C언어의 sizeof는 함수처럼 보이지만 실제로는 연산자(operator)입니다. sizeof는 인수로 전달된 대상의 메모리 크기를 계산하는 역할을 하며, 컴파일 시점에 그 크기가 결정됩니다.여기서 중요한 특징이 하나 있습니다. 만약 sizeof의 인수로 다른 함수 호출이나 표현식이 전달되더라도, 그 코드는 런타임에 실제로 실행되지 않습니다. sizeof는 오직 해당 표현식의 반환 타입(return type)만 확인하고, 그 타입의 크기만 계산할 뿐입니다.아래 예제를 통해 이 동작을 직접 확인해 보겠습니다. 반복문과 함수 호출을 s

  12. C/C++에서 정규 분포를 따르는 난수 생성하기

    이 글에서는 C/C++에서 정규 분포(Normal Distribution)를 따르는 난수를 생성하는 방법을 알아보겠습니다. 정규 난수를 얻기 위한 기본 공식은 다음과 같습니다.𝑧 = √(−2 ln 𝑥1) · cos(2𝜋𝑥2)여기서 x1과 x2는 0과 1 사이에서 무작위로 선택된 값입니다. 이 방식은 통계학에서 널리 사용되는 박스-뮬러 변환(Box-Muller Transform)의 한 형태로, 균등 분포를 따르는 두 개의 독립적인 난수를 이용해 정규 분포를 따르는 난수를 만들어냅니다.예제 코드#include <cstdli

  13. C/C++에서 입력값이 정수인지 확인하는 방법

    이 글에서는 사용자로부터 입력받은 문자열이 정수 문자열인지, 아니면 일반 문자열인지 판별하는 방법을 살펴봅니다. 여기서 정수 문자열이란 문자열을 구성하는 모든 문자가 0~9 범위의 숫자인 경우를 의미합니다.기본 원리해결 방법은 매우 간단합니다. 문자열의 각 문자를 처음부터 끝까지 하나씩 순회하면서 해당 문자가 숫자인지 검사하면 됩니다. 모든 문자가 숫자라면 true를 반환하고, 중간에 숫자가 아닌 문자를 발견하면 즉시 false를 반환합니다.C++ 구현 예제#include <iostream> using namespace

  14. C/C++에서 long long이란? 메모리 크기와 사용법 총정리

    C 또는 C++ 프로그래밍을 하다 보면 long long 자료형을 접하게 됩니다. 그렇다면 long long은 정확히 무엇일까요? 이름에서 짐작할 수 있듯이 long long은 long보다 두 배 많은 메모리를 차지하도록 설계된 자료형으로, 매우 큰 정수 값을 다룰 때 유용하게 사용됩니다.다만 실제로 할당되는 메모리 크기는 운영체제와 컴파일러 환경에 따라 달라집니다. 예를 들어 리눅스 환경에서는 long이 64비트(8바이트), long long이 128비트(16바이트)를 차지하는 경우가 있으며, 윈도우 환경에서는 일반적으로 long

  15. C/C++에서 int main()과 int main(void)의 차이점은 무엇일까?

    int main()과 int main(void), 차이가 있을까?C나 C++ 코드를 살펴보면 main 함수를 정의하는 두 가지 형태를 종종 접할 수 있습니다. 하나는 int main()이고, 다른 하나는 int main(void)입니다. 그렇다면 이 둘 사이에 실제로 차이가 있을까요?결론부터 말하면 C++에서는 두 표기법 사이에 아무런 차이가 없습니다. C 언어에서도 두 가지 모두 문법적으로 올바르지만, 기술적인 관점에서는 후자인 int main(void)가 더 바람직합니다. 그 이유는 간단합니다. 이 표기법은 함수가 어떤 인수도

  16. C 매크로의 가변 길이 인수: __VA_ARGS__와 ## 연산자 활용법

    C 매크로에서 가변 길이 인수란?C 언어에서는 printf(), scanf()처럼 함수에 가변 길이 인수(variable length arguments)를 사용할 수 있습니다. 함수에서 가변 인수를 받으려면 매개변수 목록 끝에 줄임표(...)를 선언해야 하는데, 흥미롭게도 매크로에서도 동일한 방식으로 가변 길이 인수를 지원합니다.매크로에서 가변 인수를 처리하려면 먼저 매개변수 목록 끝에 줄임표(...)를 포함해야 하며, 매크로 본문 안에서는 __VA_ARGS__ 식별자를 통해 전달된 가변 인수들을 참조합니다. 여기에 토큰 붙여넣기

  17. C 언어에서 #define과 const의 차이점: 전처리기 매크로 vs 상수 변수

    C 프로그래밍에서 상수를 표현하는 방법은 크게 두 가지입니다. 하나는 전처리기 지시문인 #define을 이용한 매크로 정의이고, 다른 하나는 const 키워드를 이용한 상수 변수 선언입니다. 두 방식은 비슷한 목적으로 사용되지만, 동작 원리와 특성에는 중요한 차이가 있습니다.#define: 전처리기 지시문#define은 전처리기(preprocessor) 지시문입니다. #define으로 매크로를 정의하면, 컴파일이 시작되기 전에 코드 안의 모든 매크로 이름이 해당 값으로 단순히 치환됩니다. 즉, 텍스트 수준의 문자열 대체가 일어나는

  18. C언어에서 char s[]와 char *s의 차이점 완벽 정리

    C 언어에서 문자열을 선언할 때 char s[] 형태의 배열을 사용하기도 하고, char *s 형태의 포인터를 사용하기도 합니다. 그렇다면 이 두 가지 방식은 완전히 동일한 것일까요? 결론부터 말하자면, 두 선언 사이에는 몇 가지 중요한 차이점이 존재합니다.배열과 포인터의 근본적인 차이s[]는 배열(array)이고, *s는 포인터(pointer)입니다. 예를 들어 char s[20]과 char *s로 각각 선언했을 때, sizeof() 연산자를 사용하면 각각 20과 4라는 결과를 얻게 됩니다.첫 번째 경우가 20이 나오는 이유는 배

  19. C/C++ switch-case 문에서 범위(Range) 활용하기

    C나 C++에서 조건 분기를 처리할 때 자주 사용하는 switch-case 문은 특정 값과 일치하는 case를 찾아 실행 흐름을 분기합니다. 그런데 단순히 하나의 값만 비교하는 것이 아니라, 값의 범위(range)를 지정하여 여러 값을 한 번에 처리할 수도 있습니다.이번 글에서는 switch-case 문에서 범위를 사용하는 방법과 실제 동작 결과를 살펴보겠습니다.범위를 지정하는 기본 문법case 문에서 범위를 지정하려면 아래와 같이 작성합니다.case low ... high작성 규칙은 다음과 같습니다.case 키워드 뒤에 범위의 최

  20. C 언어에서 함수의 암시적 반환 유형 int 완벽 정리

    C 언어에서는 함수를 선언할 때 반환 유형(return type)을 명시하지 않으면, 컴파일러가 자동으로 int를 반환 유형으로 간주합니다. 이를 암시적(implicit) 반환 유형이라고 부릅니다.암시적 반환 유형의 기본 개념함수 정의 시 반환 유형이 생략되더라도 컴파일 오류가 발생하지 않으며, 해당 함수는 int 값을 반환하는 것으로 처리됩니다. 다만, 이러한 방식은 코드의 가독성과 명확성을 떨어뜨릴 수 있어 현대 C 프로그래밍에서는 권장되지 않습니다.C99 표준부터의 변경 사항C99 표준부터는 반환 유형이 int인 경우라도 이를

Total 1443 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:16/73  20-컴퓨터/Page Goto:1 10 11 12 13 14 15 16 17 18 19 20 21 22