연재 완료/C Lang 예제코드 모음

C언어 주요 예제 코드 (데이터와 연산자 부분)

라이피 (Lypi) 2018. 5. 1. 16:45
반응형

sizeof 연산자 관련


#include <stdio.h>

void main()
{
	char c;
	int n;
	long p;
	float f;
	double d;

	printf("char형 변수 사이즈 : %d \n", sizeof(c));
	printf("int형 변수 사이즈 : %d \n", sizeof(n));
	printf("long형 변수 사이즈 : %d \n", sizeof(p));
	printf("float형 변수 사이즈 : %d \n", sizeof(f));
	printf("double형 변수 사이즈 : %d \n", sizeof(double));
	printf("bool형 변수 사이즈 : %d \n", sizeof(bool));

	/*
	sizeof()연산자는 기본형의 크기를 구할때 보다는 배열이나 구조체, 사용자 정의형 등
	메모리 크기가 가변적인 타입에 매우 유용하게 쓰인다.
	sizeof연산자는 변수명이나 타입 이름을 피연산자로 받는 단항연산자이다.
	*/
}



cast 연산자 관련

#include <stdio.h>

void main()
{
	float a, b;
	int sum1, sum2;
	float sum3;

	printf("첫번째 실수 입력 :"); scanf_s("%f", &a);
	printf("두번째 실수 입력 :"); scanf_s("%f", &b);

	sum1 = (int)(a + b); //실수끼리 더한 후 정수로 변환
	sum2 = (int)a + (int)b; //정수로 변환한 후 더함
	sum3 = a + b; // 실제 실수합

	printf("sum1 : %d \n", sum1);
	printf("sum2 : %d \n", sum2);
	printf("sum3 : %f \n", sum3);
}

// 실수형을 정수형으로 변환하면 소수점 부분이 잘리므로 값이 달라진다. 


나누기 연산관련 주의사항 

#include <stdio.h>

void main()
{
	int a, b;
	float division1, division2;
	
	printf("첫번째 정수 입력 : "); scanf_s("%d", &a);
	printf("두번째 정수 입력 : "); scanf_s("%d", &b);

	division1 = (float)(a / b); // 실수형 변수에 정수값을 형변환하지 않고 집어넣을 경우 경고가 발생한다.
	division2 = (float)a / (float)b;

	printf("division1의 결과 : %f \n", division1); 
	printf("division2의 결과 : %f \n", division2); //두수를 먼저 실수 변환하고 나눠야지만 정확한 실수값을 얻을 수 있다.
}

//(나누기 연산시 제수가 0이면 런타임 에러가 나므로 항상 주의하자)


관계연산자 중첩시 주의사항 

#include <stdio.h>

void main()
{
	int j;
	j = (1 < 0 < 2);  
	printf("식 1 < 0 < 2가 참이면 1, 거짓이면 0 : %d \n", j);
	// a<b<c 형태로 관계연산자를 쓰면 a<b의 결과값(1이나 0)을 C랑 비교하기 때문에 잘못된 결과가 나온다. 

	j = (1 < 0) && (0 < 2);
	printf("식 1 < 0 && 0 < 2가 참이면 1, 거짓이면 0 : %d \n", j);
}


입력받은 영문자가 소문자인지 대문자인지 확인하는 코드

#include <stdio.h>

void main()
{
	char ch;
	int j;
	printf("영문자를 입력하세요 : "); scanf_s("%c", &ch);
	j = (ch >= 'a' && ch <= 'z');
	//char형은 내부적으로 정수형의 일부로 문자마다 정수값이 지정되어 있다. 
	//예를 들어 'A'는 65이고 'a'는 97, 'z'는 122이다.
	printf("%c는 소문자가 %s. \n", ch, (j != 0) ? "맞습니다." : "아닙니다");
}


윤년 계산법 코드 

#include <stdio.h>

void main()
{
	int year, leap;

	printf("년도를 입력하세요 : "); scanf_s("%d", &year);

	leap = (year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0) ? 29 : 28;

	printf("%d년은 2월달이 %d일까지 있습니다.", year, leap);
}

// (year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0) 이 조건이 참이면 윤년.


xor swap 코드

#include <stdio.h>

void main()
{
	int i = 000, j = 100;

	printf("i = %d, j = %d \n", i, j);
	printf("xor swap 알고리즘 사용후 \n");

	i ^= j; j ^= i; i ^= j;
	// 이런식으로 xor연산을 세번 반복하면 두 수의 값이 바뀐다.

	printf("i = %d, j = %d \n", i, j);
}

/*

xor swap 알고리즘은 신기하긴 하지만 메모리가 충분한 지금은 그리 큰 장점이 없다.

또한 두 변수가 같은 위치를 가르키고 있을 경우 그대로 두어야 하지만 두 값 모두 0으로 변경되어 버린다는 치명적인 단점이 있다.

*/

반응형