변수란 값을 담는 그릇
1. 변수 선언
타입 변수명;
2. 기본 타입
| 타입 | 값의 형태 | 크기(byte) |
| char | 정수(문자-아스키코드) | 1 |
| short | 정수 | 2 |
| int | 정수 | 4 |
| long | 정수 | 4 |
| float | 실수 | 4 |
| double | 실수 | 8 |
| 부호있음 | 부호없음 |
| signed | unsigned |
3. 이름 명명 규칙 및 문법
1)명명규칙
알파벳(a-z, A-Z), 숫자(0-9), 특수문자(_)를 조합하여 만들 수 있고 숫자로 시작하면 안되고 키워드를 사용해도 안된다.
2)문법
문장이 #으로 시작하면 컴파일 전에 처리된다 - 전처리
#include: 헤더파일을 현재 파일에 포함
<표준출력함수>
printf("문자열");
printf("출력서식", 변수나 값의 나열);
<출력서식>
%d : 정수 1개가 출력될 자리
%c : 문자 1개 출력할 자리를 잡는다.
%f : float값 1개 출력할 자리
%lf : double값 1개 출력할 자리
|
#include <stdio.h> //변수 이름은 곧 값이다 |
#include <stdio.h> //char는 문자 1개도 담을 수 있다. |
#include <stdio.h> //f:타입을 float으로 바꿈 |
4. 연산자
1)산술연산자
| 연산자 | 설명 | 사용 | 연산결과 |
| + | 더하기 | 2+4 | 6 |
| - | 빼기 | 4-2 | 2 |
| * | 곱하기 | 5*6 | 30 |
| / | 나누기(몫) | 5/2 | 2 |
| % | 나누기(나머지) | 5%2 | 1 |
| #include <stdio.h> void main(){ int a=10, b=20, c; c = a + b; printf("%d + %d = %d \n", a, b, c); c = a - b; printf("%d - %d = %d \n", a, b, c); c = a * b; printf("%d * %d = %d \n", a, b, c); c = a / b; printf("%d / %d = %d \n", a, b, c); a = 5; b = 2; printf("%d / %d = %d\n", a, b, a/b); printf("%d mod %d = %d\n", a, b, a%b); } |
2)단항 증감 연산자
| 연산자 | 설명 | 예> |
| ++ | 1증가 |
int a=10; a++ //a는 11 |
| -- | 1감소 |
int a=10; a-- //a는 9 |
| #include <stdio.h> void main(){ int a = 10; printf("%d", a+1); //a의 값은 변함 없음 a++; //한 단위 증가: a=a+1; printf("a=%d\n", a); a++; printf("a=%d\n", a); a--; //한 단위 감소: a=a-1; printf("a=%d\n", a); a--; printf("a=%d\n", a); } |
| #include <stdio.h> void main(){ int a = 10, b; b = a++; printf("a=%d, b=%d\n", a, b); b = ++a; printf("a=%d, b=%d\n", a, b); b = a--; printf("a=%d, b=%d\n", a, b); b = --a; printf("a=%d, b=%d\n", a, b); } |
3)비교 연산자
|
연산자 |
설명 |
예 |
|
== |
두 피연산자들의 값이 같은가를 비교하여 같으면 True, 다르면 False를 반환한다. |
a == b |
|
!= |
두 피연산자들의 값이 같지 않은가를 비교하여 다르면 True, 같으면 False를 반환한다. |
a != b |
|
> |
왼쪽 피연산자 값이 오른쪽 피연산자 값보다 큰가를 비교하여 맞으면 True, 아니면 False |
a > b |
|
>= |
왼쪽 피연산자 값이 오른쪽 피연산자 값보다 크거나 같은가를 비교하여 맞으면 True, 아니면 False |
a >= b |
|
< |
왼쪽 피연산자 값이 오른쪽 피연산자 값보다 작은가를 비교하여 맞으면 True, 아니면 False |
a < b |
|
<= |
왼쪽 피연산자 값이 오른쪽 피연산자 값보다 작거나 같은가를 비교하여 맞으면 True, 아니면 False |
a <= b |
| #include void main(){ int a=10, b=5; printf("a==b:%d\n", a==b); printf("a!=b:%d\n", a!=b); printf("a>b:%d\n", a>b); printf("a>=b:%d\n", a>=b); printf("a<b:%d\n", a<b); printf("a<=b:%d\n", a<=b); } |
4) 논리 연산자
true, false를 기반으로 여러 조건을 따져 상황에 맞는 조건을 도출할 수 있다. c는 true, false를 1, 0으로 표현
|
연산자 |
설명 |
예 |
|
&& |
피 연산자 값들이 모두 true이면 true, 그렇지 않으면 false를 반환한다. |
int a=10, b=5; a==10 && b<5 |
|
|| |
피 연산자 값들 중 하나만 true이면 true, 모두 false 일때만 false를 반환한다. |
int a=10, b=5; a==10 || b<5 |
|
! |
피 연산자는 하나이고 피 연산자 값의 반전 값이 반환된다. 피 연산자가 true이면 False를 False이면 frue를 반환한다. |
!(a==10) |
| #include void main(){ int a=4, b=6, c=4; printf("a==b && a==c:%d\n", a==b&&a==c); printf("a==b || a==c:%d\n", a==b||a==c); printf("!(a==b):%d\n", !(a==b)); } |
5)비트 연산자
|
연산자 |
설명 |
예 |
|
& |
두 피연산자의 동일한 위치의 각 비트마다 모두 1이면 1, 아니면 0을 반환한다. |
a & b |
|
| |
두 피연산자의 동일한 위치의 각 비트마다 하나라도 1이면 1, 모두 0이면 0을 반환한다. |
a | b |
|
^ |
두 피연산자의 동일한 위치의 각 비트마다 같으면 0, 다르면 1을 반환한다. |
a ^ b |
|
~ |
피 연산자는 하나이고 각 비트를 반전한다. 즉 1은 0으로 0은 1로 변환한다. |
~a |
|
<< |
왼쪽 피 연산자의 모든 비트를 오른쪽 피 연산자(숫자) 만큼 모든 비트를 왼쪽으로 쉬프트한다. |
a << 2 |
|
>> |
왼쪽 피 연산자의 모든 비트를 오른쪽 피 연산자(숫자) 만큼 모든 비트를 오른쪽으로 쉬프트한다. |
a >> 3 |
6)삼항 연산자
| 연산자 | 문법 | 예> | ||
| ? | (조건)?실행문1:실행문2; | int x = 10; (x==10)? printf("x는10"):printf("x는10아님"); |
||
| #include void main(){ int x = 50; (x%2==0)?printf("짝수\n"):printf("홀수\n"); } |
7)대입 연산자
|
연산자 |
사용 예 |
동일한 표현 |
|
= |
a = 10 |
a = 10 |
|
+= |
a += 10 |
a = a + 10 |
|
-= |
a -= 10 |
a = a - 10 |
|
*= |
a *= 10 |
a = a * 10 |
|
/= |
a /= 10 |
a = a / 10 |
|
%= |
a %= 10 |
a = a % 10 |
|
&= |
a &= 10 |
a = a & 10 |
|
|= |
a |= 10 |
a = a | 10 |
|
^= |
a ^= 10 |
a = a ^ 10 |
|
>>= |
a >>= 2 |
a = a >> 2 |
|
<<= |
a <<= 2 |
a = a << 2 |
| #include void main(){ int a=10; printf("a+=10후 a=%d\n", a+=10); a=10; printf("a-=10후 a=%d\n", a-=10); a=10; printf("a*=10후 a=%d\n", a*=10); a=10; printf("a/=10후 a=%d\n", a/=10); a=10; printf("a%%=10후 a=%d\n", a%=10); } |
5. 표준입력
scanf("입력서식", 저장할 변수의 주소);
| #include void main(){ int a; printf("정수를 입력하라\n"); scanf("%d", &a);//표준입력함수 .키보드 입력 printf("입력한 값은 %d\n", a); printf("a의 주소:%d\n", &a); } |
| #include void main(){ char a; int b, d, e; float c; printf("문자 하나를 입력하라\n"); scanf("%c", &a); printf("정수 하나를 입력하라\n"); scanf("%d", &b); printf("실수 하나를 입력하라\n"); scanf("%f", &c); printf("입력한 값은 %c, %d, %f\n", a, b, c); printf("정수 세개를 입력하라\n"); scanf("%d%d%d", &b, &d, &e); printf("입력한 값은 %d, %d, %d\n", b, d, e); } |
| #include void main(){ int score; printf("점수:"); scanf("%d", &score); score>=60?printf("합격\n"):printf("불합격\n"); } |
6. 형변환
변수나 값의 타입을 변환함
int+int(int 끼리 연산) => int
예> 5/2의 결과는 2
float + float(float 끼리 연산) => float
1)자동형변환: 자동으로 이뤄진다.
타입이 다른 값들을 연산할때 발생. 작은 타입이 큰 타입으로 변함
char=>short=>int=>long=>float=>double
signed=>unsigned
2)강제형변환
강제로 형을 변환함. 캐스팅 연산자를 사용해야 함
int a = 10;
(float)a
| //sizeof 연산자:메모리 크기를 계산 void main(){ printf("char 크기:%d\n", sizeof(char)); printf("short 크기:%d\n", sizeof(short)); printf("int 크기:%d\n", sizeof(int)); printf("long 크기:%d\n", sizeof(long)); printf("float 크기:%d\n", sizeof(float)); printf("double 크기:%d\n", sizeof(double)); /* signed(음/양) unsigned(양수) signed char a; unsigned char b; 4-signed int 3.14-double 3.14f-float */ //자동 형변환: 타입이 다른 값들을 연산할때 발생. 작은 타입이 큰 타입으로 변함 //char=>short=>int=>long=>float=>double //signed=>unsigned if(sizeof(int)<-1){ printf("true"); }else{ printf("false"); } int s1=34, s2=56, s3=78; float avg = (float)(s1+s2+s3)/3; //강제형변환 } |
댓글