1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言变量名必须用小写 常量用大写 day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...

c语言变量名必须用小写 常量用大写 day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...

时间:2019-01-24 18:03:30

相关推荐

c语言变量名必须用小写 常量用大写 day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...

常量 - 不会变化的数据

“hello” ‘A’ 10 3.14

#define PI 3.14 //采用宏定义的方法 定义一个常量

const int a = 10;

求圆的面积和周长

#include

#define PI 3.14

int main(void)

{

//圆的面积 s = r * r * PI

int r = 3;

float s = PI * r * r;

//圆的周长 l = 2 * PI * r

float l = PI * r * 2;

printf("圆的面积是%f\n",s);

printf("圆的周长是%f\n",l);

//保留小数点后两位

printf("保留小数点后两位后的结果,对第三位进行四舍五入后的结果\n");

printf("圆的面积是%.2f\n",s);

printf("圆的周长是%.2f\n",l);

return 0;

}

变量 - 会变化的数据

定义语法

类型 名 变量名 = 变量值;

int x = 123;

变量三要素

类型名

变量名

变量值 可以使表达式,也可以是常量

存储空间

每一个存储空间都有 0xaabb 类似的指针指向的地址

空间大小由变量类型决定,比如说int是 4 字节

变量的定义和声明区别

定义是赋值了

int x = 123;

声明没有赋值

int a;

extern int a; 有 extern关键字就不会提升为定义了

区别:

变量定义会开辟内存空间

变量 声明不会开辟内存空间,变量没定义,使用之前会自动寻找变量声明提升为定义

变量要想使用,必须要定义,没写就自动给值

标识符

命名规则

常量 大写

变量 小写

只能使用字母,数字,下划线(_)

数字不能开头

整型

定义

short

int

long

long long

输出

%d

sizeof求占用空间大小

#include

int main(void)

{

short s = 1;

int a = 40;//

long l1 = 111111;

long long ll1 = 9999999999999999999;

printf("short大小为:%d个字节\n",sizeof(s));

printf("int大小为:%d个字节\n",sizeof(a));

printf("long大小为:%d个字节\n",sizeof(l1));

printf("long long大小为:%d个字节\n",sizeof(ll1));

printf("short大小为:%d个字节\n", sizeof(short));

printf("int大小为:%d个字节\n", sizeof(int));

printf("long大小为:%d个字节\n", sizeof(long));

printf("long long大小为:%d个字节\n", sizeof(long long));

return 0;

}

输出

short大小为:2个字节

int大小为:4个字节

long大小为:4个字节

long long大小为:8个字节

short大小为:2个字节

int大小为:4个字节

long大小为:4个字节

long long大小为:8个字节

有符号整型signed 有符号可以为正数或负数

超级不常用

signed int a = 10;

无符号类型unsigned 无符号一定是正数

unsigned int a = 10; //表示a 一定是无符号,指的是数据量,不表示方向(没有正负 )

数据类型

整数类型总结

有符号类型signed

short%hd 2字节

int %d4字节

long %ld4字节 Windows32位和64位都是4字节,linux 32位是4字节,64位是8字节

long long %lld8字节

无符号类型unsigned

unsigned short%hu 2字节

unsigned int %u4字节

unsigned long %lu4字节 Windows32位和64位都是4字节,linux 32位是4字节,64位是8字节

unsigned long long %llu8字节

字符类型char

char c = ‘A’ ;//单引号

#include

int main(void)

{

char c = 'A';

printf("%c\n",c); //A

printf("%d\n",c); //65

c = '#';

printf("%c\n",c); //#

printf("%d\n",c); //35

c = 97;

printf("%c\n", c); //a

printf("%d\n", c); //97

return 0;

}

大小写转换

#include

int main(void)

{

//大小写转换 差32

char c = 'M';

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

c += 32;

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

return 0;

}

认识几个重要字符

‘A’ 65

‘a’ 97

‘0’48

‘\n’ 10

‘\0’ 0

转义字符: ‘\’ 反斜杠,将普通字符转为特殊意义,也可以反转

浮点型,小数型

单精度浮点型float 4字节

定义

float f = 1.234f

尾不加 f 默认是 double

​默认保留6位小数

无符号的单精度浮点型

unsigned float f = 4.234

输出时候

用%f

用%.3f 控制小数点后位数

用%5.3f 控制小数点后位数,和所占的空间

用%05.3f 控制小数点后位数,和所占的空间,不足的地方用0表示

双精度浮点型double 8字节

定义

double d = 5.324534

无符号的双精度浮点型

unsigned double d = 5.7545

输出时候

用%lf

用%.6lf 控制小数点后位数

用%8.6lf 控制小数点后位数,和占8位空间

用%08.6lf 控制小数点后位数,和占8位空间,不足的地方用0表示

有符号类型

#include

int main(void)

{

float f = 3.14f;

double d = 4.566;

//默认输出小数点后6位

printf("%f\n", f); //3.140000

printf("%lf\n", d);//4.566000

//可以通过.的方式限制小数点后面位数,多余的 四舍五入,不够的用0补上

printf("%.2f\n",f);//3.14

printf("%.3lf\n",d);//4.566

//可以通过前面固定占几位的空间

printf("%5.2f\n", f);// 3.14

printf("%6.3lf\n", d);// 4.566

//可以通过前面固定占几位的空间,不足的地方用0补齐

printf("%05.2f\n", f);//03.14

printf("%06.3lf\n", d);//04.566

}

科学计数法赋值

​float f = 2.3e3f

​float f = 2.3e-3f

进制转换

计算机内部存储 - 二进制

十进制转二进制:

除二反向取余

二进制转十进制

按照 1*2的次幂来 相加,如果位上是0 就不相加了

2^10 = 1024

2^9 = 512

2^8 = 256

2^7 = 128

2^6 = 64

2^5 = 32

2^4 = 16

2^3 = 8

2^2 = 4

2^1 = 2

2^0 = 1

八进制转十进制

定义八进制的语法:

056:零开头,每位数是0-7之间

每一个位是8的几次方

056

​ 5个8的一次方 = 40

​6个8的零次方 = 6

结果46

八进制转二进制: 三位421法

除二反向取余

056 对应二进制

按照421来,一个8禁止为对应三位二进制

5的二进制是 101

6的二进制是 110

8进制056的二进制是

101 110

八进制05326转二进制

101011010110

二进制转换八进制

三位一组转换成8进制,从右往前分

001 101 010 101 001

1 5 2 5 1

015251

十六进制转十进制

十六进制表示方法:

0xFD89A2

A–10

B–11

C–12

D–13

E–14

F–15

​16^516^416^316^216^116^0

0xFD89A2

​1048576x15+ 65536x13 + 4096x8+ 256x9+16x10 + 1 x 2

=15728640 + 851968 +32768 +2304 +160 +2

=16615842

十六进制转二进制 四位8421法

0x 1A

1 A

0001 1010

00011010

二进制转16进制 四位一算

0101 0101 1001 0010 1110

0x5 5 9 2 E

0x5592e

输出格式统计

格式

表示

类型

%d

有符号 - 十进制整型

int

%u

无符号 - 十进制整型

unsigned int

%o

八进制

%x

十六进制

%hd

有符号 - 短整型

short

%hu

无符号 - 短整型

unsigned short

%ld

有符号 - 长整型

long

%lu

无符号 - 长整型

unsigned long

%lld

有符号 - 长长整型

long long

%llu

无符号 - 长长整型

unsigned long long

%c

字符型

char

%f

浮点型

float

%lf

双精度浮点型

double

原码反码补码

原码

特点:

最高位为符号位,0表示正,1表示负

其他树脂部分就是数值本身绝对值的二进制数

负数的原码是在绝对值的基础上,最高位变为1

十进制数

原码

+15

0000 1111

-15

1000 1111

+0

0000 0000

-0

1000 0000

反码

特点

对于正数:反码和原码相同

对于负数:符号位不变,其他部分取反0变1,1变0

十进制数

反码

+15

0000 1111

-15

1111 0000

+0

0000 0000

-0

1111 1111

补码 (现今计算机采用的存储方式)

特点

正数的原码反码补码都一样

负数的补码是: 反码基础上+1

​最高位表示符号位

​其余位取反 + 1

43-27 ==> 43 + -27

00101011

​10011011

​11100100

11100101

00010000

算出来是二进制16

人为规定

00000000 ==> 0

11111111 ==> -128

char类型 8个比特位,最高表示符号,数值位有7个

​最大数值就是-2^7 到 2^7-1 (因为多了一个0) = -2^(8-1) 到 -2^(8-1)-1

​-128~127

​而无符号位的第一位不用表示符号,就能表示 2^8 - 1(有一个0)个

​0 ~255

int类型4x8 = 32比特位个,最高位表示符号,数值位有31个

​最大数值就是-2^31 到 2^31-1(因为多了一个0)

​-2147483648 ~ 2147483647

​无符号整形就是:0 - 2^32 -1 0 ~ 4294967295

long类型 4x8 = 32比特位,最高位表示符号,数值位有31个

​最大数值就是-2^31 到 2^31-1(因为多了一个0)

​-2147483648 ~ 2147483647

​无符号长整形 首位作为数值位了后范围:04294967295(0(2^32-1)

long long类型 8x8 = 64bit

​ 范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16)

​无符号类型长长整型为 0 ~ 1844 6744 0737 0955 1615 (1844*10^16)

数据溢出

char 取值范围 -128 - 127

char c = 127+1;

= 01111111 +1

=10000000 = -128

10000001 = -127

良浩

发布了33 篇原创文章 · 获赞 6 · 访问量 8万+

私信

关注

标签:字节,符号,int,day02,数据类型,unsigned,long,C语言,printf

来源: /zlhyy666666/article/details/104586698

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。