20160329-업무일지-허도경-로봇제어-환경변수
이것이 커져서 인터넷으로 바뀌엇고 국방성은 보안을 위하여 여기서 나갔다.
---------------------------------------------------------------------------------------------------------
c언어
(signed) char cNum과 unsigned char ucNum을 1칸씩 밀었을때 일어나는 현상
#include<stdio.h>
int main()
{
char cNum = 0X89;//10진수로 137
unsigned char ucNum = 0X89;
printf("cNum>>1: %d \n", cNum>>1);
printf("ucNum>>1: %d \n", ucNum>>1);
}
unsigned char는 양수 만을 출력한다 0~255까지 출력가능하다.
(signed) char는 반은 음수 반은 양수를 출력해서-127~128까지 출력가능하다.
cNum
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
양수 출력 가능 수를 넘어서서 -119라는 수가 나옴
cNum>>1
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
이 되어야 하지만 위에서 보듯이 양수 출력 가능 수를 넘어섰기에 음수 출력 되어야 한다
∴앞에 1을 붙여넣는다. 그것으로 -임을 계속 유지 시킨다.
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
음수의 값을 취하기 위하여 2의 보수한 값인 00111011+1을 하여 60즉 -60을 얻게 된다.
cNum>>3
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
∴위를 2의 보수한 값인 00001110+1을 하여 15즉 -15를 얻게 된다.
ucNum>>1
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
양수만을 출력 가능하겠금 해 놓았기 때문에 255까지 아무런 제약없이 쓸수 있다.
ucNum>>3
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
양수만을 호출할때는 나머지 빈곳들은 전부 0을 넣는다. 17이라는 수를 얻을 수 있다.
다음중 맞는것은?
1.char A = '45';
2.char A = "45";
3.char *p= '45';
4.char *p = "45";
정답은 4번이다.
우리가 컴파일을 하다보면 에러가 뜬다 하지만 그것은 에러일뿐 버그는 아니다.
에러에는 두가지가 존재한다.
1.Compile time: 흔히 우리가 컴파일할때 오타혹은 넣지 않은것이 있을때 생긴다.
2.Run time: 컴파일 하는 도중에 에러가 남