c语言字符型和浮点型相加,C语言基础 整型、字符型和浮点型

1.整型数据类型

C定义了5种整型数据类型。

整型数据类型表

序号

类型名称

说明

字节数

取值范围

1

signed char

有符号的单字节整数类型

1

-128~+127

2

short int

短整型

2

-32768~+32767

3

int

整型

4

-2147438648~+2147438647

4

long int

长整型

4

-2147438648~+2147438647

5

long long int

长长整型

8

-9223372036854775808~+-9223372036854775807

例 输出各种整型类型的字节数

#include int main(void) {

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

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

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

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

printf("sizeof(long long int) = %d/n", sizeof(long long

int));

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c15.c

[root@localhost ccc]# ./a.out

sizeof(signed char) = 1

sizeof(short int) = 2

sizeof(int) = 4

sizeof(long int) = 4

sizeof(long long int) = 8

程序说明:sizeof是字节操作符,使用方式,sizeof(数据类型)。sizeof的作用是得到数据类型所占的字节数。我们运行程序使用的环境是Redhat

5 Linux,编译器是GCC。

2.无符号整数类型

对应有符号类型,还有无符号整数类型。

无符号整数类型表

序号

类型名称

字节数

取值范围

1

unsigned char

1

0~255

2

unsign short int

2

0~65535

3

unsigned int

4

0~4294967295

4

unsigned long int

4

0~4294967295

5

unsign long long

int

8

0~18446744073709551615

例 输出各种无符号整数类型的字节数

#include int main(void) {

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

char));

printf("sizeof(unsigned short int) = %d/n", sizeof(unsigned short

int));

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

printf("sizeof(unsigned long int) = %d/n", sizeof(unsigned long

int));

printf("sizeof(unsigned long long int) = %d/n", sizeof(unsigned

long long int));

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c16.c

[root@localhost ccc]# ./a.out

sizeof(unsigned char) = 1

sizeof(unsigned short int) = 2

sizeof(unsigned int) = 4

sizeof(unsigned long int) = 4

sizeof(unsigned long long int) = 8 3.整型常量 整型常量是指用以表示整型数值的常量,分为短整型(short int)、整型(int)、长整型(long int )和长长整型(long

long int)四种。C默认整型(int)。各种类型整型常量进制表示表(后缀不区分大小写)

序号

数据类型

八进制

十进制

十六进制

1

整型

0112

74

0x4a

2

长整型(l)

0112l

74l

0x4al

3

长长整型(ll)

0112ll

74ll

0x4all

4

无符号整型(u)

0112u

74u

0x4au

5

无符号长整型(ul)

0112ul

74ul

0x4aul

6

无符号长长整型(ull)

0112ull

74ull

0x4aull

4.字符数据类型 C语言中字符型数据只有一种,即char型数据。一般也把char直接称为字符型。字符型占用内存空间最少,一般占用一个字节,存储在char类型变量的整数可以表示为有符号或无符号的值,这取决于编译器。

例 字符型数据类型的字节长度

#include int main(void) {

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

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

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

char));

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c17.c

[root@localhost ccc]# ./a.out

sizeof(char) = 1

sizeof(signed char) = 1

sizeof(unsigned char) = 1

5.字符变量

字符变量是用于存储字符型数值的变量。字符型变量也分为两种:有符号和无符号型。

语法结构:

[signed] char ch1;

[unsigned] char ch2;

#include int main(void) {

char ch1 = '/n';

unsigned char ch2 = '/t';

char ch3 = 48;

printf("ch1 = [%c], [%d]/n", ch1, ch1);

printf("ch2 = [%c], [%d]/n", ch2, ch2);

printf("ch3 = [%c], [%d]/n", ch3, ch3);

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c18.c

[root@localhost ccc]# ./a.out

ch1 = [

], [10]

ch2 = [ ], [9]

ch3 = [0], [48]

程序说明:转义符'/n'是换行符,第一个printf函数中%c处会替换为'/n',输出到终端上则会替换为换行,我们可以看到输出的第一个方括号中间发生换行。%d是c1的ASCII码值代替。转义符'/t'是水平制表符,第二个printf里的%c会替代为'/t',输出到终端上。数值48对应的

ASCII码是0,所以对应输出到终端上是一个0。

6.浮点型数据类型

C语言定义了三种浮点数据类型:

?float,单精度

?double,双精度

?long double,长双精度

C标准中对不同类型的浮点数有不同的规定,编译器不同或硬件条件不同,字节长度也不相同。

例 测试三种浮点型字节长度

#include int main(void) {

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

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

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

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c19.c

[root@localhost ccc]# ./a.out

sizeof(float) = 4

sizeof(double) = 8

sizeof(long double) = 12

浮点型的字节长度、精度、数量级范围和输出输入格式表

序号

数据类型

字节长度

精度

数量级范围

printf和scanf格式

1

float(f)

4

7

-38~38

%f

2

double

8

约16

-308~308

%f

3

long double(1)

12

约19

-4932~4932

%llf

7.浮点型精度

浮点型精度从低到高排列为float、double和long long double。

例 检查浮点型精度

#include int main(void) {

float f = 0.9876543210123456789012f;

double d = 0.9876543210123456789012;

long double ld = 0.9876543210123456789012l;

printf("f/t= %.25f/n", f);

printf("d/t= %.25lf/n", d);

printf("ld/t= %.25llf/n", ld);

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c20.c

[root@localhost ccc]# ./a.out

f = 0.9876543283462524414062500

d = 0.9876543210123456262294894

ld = 0.9876543210123456789217150

8.浮点型的存储方式

浮点型数值以科学计数法的表示形式存储在内存中。浮点型的内存形式包含三个部分:

1)符号位

符号位浮点型的符号位只有一位,为最高位。该位为1,表示负数,该位为0,为非负数。

2)指数位

浮点型的指数位以补码形式存储,是科学计数法的指数部分。

3)基数位

基数位是浮点型的最后一位,这个位决定数值的精度。

浮点型储存分段表

序号

数据类型

符号位

指数位

基数位

偏差值

1

float

1

8

23

127

2

double

1

11

52

1023

3

long double

1

15

64

16383

例 检测float、double和long double的存储状态

#include int main(void) {

float fone = 2.0;

float ftwo = 2.5;

double done = 2.0;

double dtwo = 2.5;

long double ldone = 2.0;

long double ldtwo = 2.5;

printf("float (2.0) = x/n", *(int *)(&fone));

printf("float (2.5) = x/n", *(int *)(&ftwo));

printf("double(2.0) = 6llx/n", *(long long *)(&done));

printf("double(2.5) = 6llx/n", *(long long *)(&dtwo));

printf("londou(2.0) = x x x/n",

*(((int *)(&ldone)) + 2 ),

*(((int *)(&ldone)) + 1 ),

*(((int *)(&ldone)) ));

printf("londou(2.5) = x x x/n",

*(((int *)(&ldtwo)) + 2 ),

*(((int *)(&ldtwo)) + 1 ),

*(((int *)(&ldtwo)) ));

return 0;

}

编译和运行结果

[root@localhost ccc]# gcc c21.c

[root@localhost ccc]# ./a.out

float (2.0) = 40000000

float (2.5) = 40200000

double(2.0) = 4000000000000000

double(2.5) = 4004000000000000

londou(2.0) = 00004000 80000000 00000000

londou(2.5) = 00004000 a0000000 00000000

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值