검색결과 리스트
전체 글에 해당되는 글 199건
- 2014.03.07 20140307 (2의 보수법, 관계, 논리 연산자)
- 2014.03.06 20140306
- 2014.03.05 20140305 (C언어 시작)
글
20140307 (2의 보수법, 관계, 논리 연산자)
15일차
------------------------------------------
Magnitude 방식과 2'Complete(2의 보수법)
------------------------------------------
unsigned 붙은것과 안 붙은것
2의 보수법을 취하는 것을 보는 소스다.
#include <stdio.h>
int main()
{
unsigned char cNum1;
char cNum2;
cNum1 = 127;
cNum2 = 127;
printf("%d %d\n", cNum1, cNum2);
cNum1 = 128;
cNum2 = 128;
printf("%d %d\n", cNum1, cNum2);
cNum1 = 129;
cNum2 = 129;
printf("%d %d\n", cNum1, cNum2);
cNum1 = 255;
cNum2 = 255;
printf("%d %d\n", cNum1, cNum2);
return 0;
}
출력 화면
------------------
관계, 논리 연산자
------------------
#include <stdio.h>
int main()
{
int iNum1;
int iNum2;
int iNum3;
int iNum4;
int iNum5;
int iNum6;
int iNum7;
int iNum8;
int iNum9;
int iNum10;
iNum1 = 6 > 5;
iNum2 = 6 > 7;
iNum3 = 7 == 6;
iNum4 = !3;
iNum5 = 7 != 6;
iNum6 = 7 <= 7;
iNum7 = 7 && 6;
iNum8 = 8 || 0;
iNum9 = 100;
iNum10 = 7 || (++iNum9);
printf("iNum1 = %d\n", iNum1);
printf("iNum2 = %d\n", iNum2);
printf("iNum3 = %d\n", iNum3);
printf("iNum4 = %d\n", iNum4);
printf("iNum5 = %d\n", iNum5);
printf("iNum6 = %d\n", iNum6);
printf("iNum7 = %d\n", iNum7);
printf("iNum8 = %d\n", iNum8);
printf("iNum9 = %d\n", iNum9);
printf("iNum10 = %d\n", iNum10);
return 0;
}
출력화면
여기서 재미있는게 있는데
바로 iNum9의 값이다.
원래 예상대로라면 101이 나와야 하지만 100이 나왔다.
왜냐하면 cpu에서도 일을 적게하려 하기에 || (or) 을 실행 시
앞의 조건이 참이면 뒷 조건은 실행하지 않는다.
반대로 앞 조건이 거짓이면 뒷 조건을 실행한다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140311 (비트연산자, 상수, 변수, const, sizeof) (0) | 2014.03.11 |
---|---|
20140310 (scanf, 16진수 10진수, 실수) (0) | 2014.03.10 |
20140306 (0) | 2014.03.06 |
20140305 (C언어 시작) (0) | 2014.03.05 |
20140304 (cl 환견변수 등록) (0) | 2014.03.04 |
글
20140306
14일차
C프로그래밍을 배움.
Windows 환경과 Linux 환경을 비교해가며 배움.
Linux에서도 cc 사용 가능.(cc를 쓰면 자동으로 gcc를 사용하도록 되있다고 한다.)
- printf("\n");
ms-dos에서는 프로그램을 실행하고 명령입력창?( C:\>_ )을 띄울 때
라인피드와 캐리지 리턴을 실행하는 반면,
linux에서는 프로그램을 실행하고 명령입력창?( [id@server path] _ )을 띄울 때
캐리지 리턴만 하는 것 같다.
그래서 마지막 printf() 함수에서 \n개행문자를 안 넣어주면
결과 값이 다르게 나온다는 것을 보았다.
오늘 배운 것 중에 유심히 본 것이 일의 순서에 대하여 언급하신 것인데
나중에 임베디드 프로그래밍을 할 때에 저렇게 완다갔다 하는 시간을
줄여서 최적화하는데 한 몫하지 않나 싶다. 아직은 잘 모르니 앞으로 유심히 봐야 할 것.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140310 (scanf, 16진수 10진수, 실수) (0) | 2014.03.10 |
---|---|
20140307 (2의 보수법, 관계, 논리 연산자) (0) | 2014.03.07 |
20140305 (C언어 시작) (0) | 2014.03.05 |
20140304 (cl 환견변수 등록) (0) | 2014.03.04 |
20140303 (0) | 2014.03.03 |
글
20140305 (C언어 시작)
13일차
컴파일 : C언어에서 기계어로 바꾸는 과정
***.c ----> ***.i ----> ***.s(asm) -----> ***.o(obj) ----> ***.(exe)
(소스파일) 전처리 컴파일 어셈블리 링크
- int : 반환하는 값의 형식
- main : Entry Point 라고 진입점. 프로그램이 시작할때 처음 진입하는 함수.
- () : 조건부로 보면 되는데 인수가 들어간다. 이건 나중에 배울 예정.
- { } : main 처럼 함수의 끝과 시작.
- return : 반환하라는 의미로 함수의 종료를 뜻한다.
- 0 : 반환하는 값을 0으로 주는데, 프로그래머의 재량으로 아무 값이나 주면 되는데
c표준으로 0을 쓰면 아무 문제 없이 잘 끝났다는 의미로 사용.
- ; : 세미콜론으로 한 명령이 끝 날 때마다 사용. 명령어 구분.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140307 (2의 보수법, 관계, 논리 연산자) (0) | 2014.03.07 |
---|---|
20140306 (0) | 2014.03.06 |
20140304 (cl 환견변수 등록) (0) | 2014.03.04 |
20140303 (0) | 2014.03.03 |
20140228 (리눅스 디렉토리 종류, vi편집기) (0) | 2014.02.28 |