您的位置:首页 > 编程语言 > C语言/C++

C语言数据类型(4.21)

2015-05-01 18:27 190 查看
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,查看输出的结果

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

char a,b,c;

unsigned char d,e,f;

a = 100;

b = 200;

c = 300;

d = 100;

e = 200;

f = 300;

printf("a = %d\n",a);

printf("b = %d\n",b);

printf("c = %d\n",c);

printf("d = %d\n",d);

printf("e = %d\n",e);

printf("f = %d\n",f);

return 0;

}

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)?

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int a;

short b;

float x = 0.123;

unsigned char c;

printf("sizeof(int) = %d\n",sizeof(int));

printf("sizeof(b) = %d\n",sizeof(b));

printf("sizeof(unsigned char) = %d\n",sizeof(unsigned
char));

printf("sizeof(char) = %d\n",sizeof(char));

printf("sizeof(short) = %d\n",sizeof(short));

printf("sizeof(int) = %d\n",sizeof(int));

printf("sizeof(long) = %d\n",sizeof(long));

printf("sizeof(long long) = %d\n",sizeof(long
long));

printf("sizeof(float) = %d\n",sizeof(float));

printf("sizeof(double) = %d\n",sizeof(double));

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

printf("a = %d\n",a);

printf("b = %d\n",b);

printf("x = %f\n",x);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: