2의 보수법 (1byte로 정수 나타내기)
#include <stdio.h>

int main()
{
  /* unsigned */ char CNum; //unsigned양수
  CNum=127;
  printf("%d\n", CNum);
  CNum=128;
  printf("%d\n", CNum);
  CNum=129;
  printf("%d\n", CNum);
  CNum=255;
  printf("%d\n", CNum);
  return 0;
}
/* 수의범위 : 2의보수법으로 char는 정수 -128부터 127까지 사용할수있다.
              하지만 char앞에 unsigned을 사용하면 양수만 0에서 255까지 사용할수 있다.

   2의보수 0000 0010에 반대값 적기
   (반대값)1111 1101 1의보수 상태가 된다. 여기서 +1만 더해주면 2의보수가 된다.

           1111 1101(+1)
          =1111 1111       실제 기억값은 255 출력값은 -1
*/







산술연산자
#include <stdio.h>

int main()
{
  int iNum1;
  int iNum2;
  iNum1 = 3;
  iNum2 = 7;

  iResult1=iNum1/iNum2; 
  iResult2=iNum1%iNum2; 
  printf("%d(/)%d의 값은 %d이다.\n", iNum1 ,iNum2 ,iResult1); //산술연산자(/)는 몫을 나타낸다
  printf("%d(%)%d의 값은 %d이다.\n", iNum1 ,iNum2 ,iResult1); //산술연산자(%)나머지를 나타낸다.
  return 0;
}





증감연산자
#include <stdio.h>

int main()
{
  int iNum = 1;
  int iVal;
  iVal=++iNum; 
  printf("%d\n", iNum);
  printf("%d\n", iVal);
  iVal=iNum++; //++iNum는 연산먼저 iNum++ 대입먼저 
  printf("%d\n", iNum);
  printf("%d\n", iVal);
//증감연산자를 쓸때 단독으로 쓰면 결과는같다.    
  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//7과6이 같은가? 
  iNum4=!1;  //NOT 참이면 거짓
  iNum5=7!=6// 7과6이 다르면 참
  iNum6=7<=7//7과 7이 같거나 작은가? 
  iNum7=-7&&6//&&AND 연산우선순위 - > && > =
  iNum8=7||0//||OR 
  iNum9=100;
  iNum10=7||(++iNum9); // ++iNum9연산은 되지않는다. 앞항이 무조건 참이므로 뒷항은
 연산하지 않는다. 그래서 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;
}


by 날라차숑 2014. 3. 7. 17:23