Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37370
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 82
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-16 19:30
个人简介

嵌入式Linux编程 Android软件开发

文章分类

全部博文(16)

文章存档

2015年(16)

分类: C/C++

2015-04-29 20:34:00

C语言回顾

 

1.数据类型 

 

<1>基本类型

 

整型    小整型[char],短整型[short],整型[int],长整型[long] 

浮点型  单精度[float],双精度[double]

 

<2>构造类型

 

数组 结构体 联合体枚举

 

 

2.运算符 

 

自增/自减 :  ++ , --

算术运算符:  +, - , * , / ,%

逻辑运算符:  >,<,>=,<=,==,!= , &&[且的关系],|| [或的关系]

位运算符  :  & , | , >> , << ,!

 

3.数组/指针/函数

 

 

四 C语言的数据类型 

 

用途:定义变量

 

数据类型  变量名;

数据类型  变量名=;

 

思考:为什么定义变量?

C语言中定义变量,会分配内存,分配内存用来存储数据

 

思考:定义变量的时候,分配的内存的大小?

取决于数据类型,不同数据类型,分配的大小不一样[指针变量比较特殊]

 

 

1.基本类型

 

整型    小整型[char],短整型[short],整型[int],长整型[long] 

浮点型  单精度[float],双精度[double]

 

 

<1>小整型[char] 

 

大小:1byte(8bit)

 

0000 0000  =>   0 

1111 1111  => 255

 

有符号char [char]           (-128,127)

无符号char [unsigned char]  (0   ,255)

 

如果是一个有符号类型,其最高位为符号位[0:正数  1:负数]

如果是一个无符号类型其最高位为数据位,不是符号位

 

注意:

数据在内存中以补码的形式存放

 

正数补码  正数本身 

负数补码  对应的正数取反 + 1 

 

-------------------------------------------

char a = 100;

char b = 250;

-------------------------------------------

 

总结:

正数和负数最终以补码的形式存放,当我们读数据的时候,

如果是一个无符号类型变量,其最高位不当作符号位,直接读取数据

如果是一个有符号类型变量,其最高位当作符号位,最高位为1则为负数[原码 = ~对应正数+ 1]

,其最高位为0,则标示正数,直接读取数据。

 

练习:

分别给unsigned char /char变量,赋值100,200,300,查看输出的结果


点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char a,b,c;
  5.     unsigned char d,e,f;

  6.     a = 100;
  7.     b = 200;
  8.     c = 300;

  9.     d = 100;
  10.     e = 200;
  11.     f = 300;

  12.     printf("a = %d\n",a);
  13.     printf("b = %d\n",b);
  14.     printf("c = %d\n",c);
  15.     printf("d = %d\n",d);
  16.     printf("e = %d\n",e);
  17.     printf("f = %d\n",f);

  18.     return 0;
  19. }


char b = -128;

unsigned char c = -128;

 

-128 在内存中的补码:

 

  1000  0000 

~ 0111  1111 

+          1

----------------------------

  1000  0000 

 

 

补码的结果对于b而言,最高位为符号位,认为负数  => 原碼  = 111 1111(取反的结果)  + 1 = 128  => -128

补码的结果对于c而言,最高位不是符号位,认为正数 => 原碼 1000 0000 => 128 

 

char b = -129;

unsigned c = -129;

 

最终输出b:127    c:127  

 

 

<2>短整型[short]

 

大小:2byte(16bit)

有符号short [short]           (-32768,32767)

无符号short [unsigned short]  (0 ,65535)

 

<3>整型[int]

 

大小:4byte(32bit)

 

有符号int   [int]           

无符号int   [unsigned int]  

 

<3>长整型[long]

 

大小:4byte(32bit) [32bit机器]  /  8byte [64bit机器]

 

有符号int   [int]           

无符号int   [unsigned int]  

 

<4>长长整型[long long]

大小:8byte(64bit)

 

 

-------------------------------------------------

注意:计算类型大小  sizeof(类型/变量名)

-------------------------------------------------

 

练习:输出类型大小(char ,short,int,long,long long,float,double)?

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int a;
  5.     short b;
  6.     float x = 0.123;
  7.     unsigned char c;

  8.     printf("sizeof(int) = %d\n",sizeof(int));
  9.     printf("sizeof(b) = %d\n",sizeof(b));
  10.     printf("sizeof(unsigned char) = %d\n",sizeof(unsigned char));
  11.     
  12.     printf("sizeof(char) = %d\n",sizeof(char));
  13.     printf("sizeof(short) = %d\n",sizeof(short));
  14.     printf("sizeof(int) = %d\n",sizeof(int));
  15.     printf("sizeof(long) = %d\n",sizeof(long));

  16.     printf("sizeof(long long) = %d\n",sizeof(long long));
  17.     printf("sizeof(float) = %d\n",sizeof(float));
  18.     printf("sizeof(double) = %d\n",sizeof(double));

  19.     //printf("sizeof(x) = %d\n",sizeof(x));

  20.     printf("a = %d\n",a);
  21.     printf("b = %d\n",b);
  22.     
  23.     printf("x = %f\n",x);

  24.     return 0;
  25. }


阅读(812) | 评论(0) | 转发(0) |
0

上一篇:多线程编程

下一篇:C语言运算符(4.22)

给主人留下些什么吧!~~