常量 - 不会变化的数据

“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

来源: https://blog.csdn.net/zlhyy666666/article/details/104586698

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

  1. 【C语言】变量和常量、数据类型、进制转换、数据存储

    目录 1. 变量 1.1 变量的分类 1.1.1 局部变量 1.1.2 全局变量 1.2 变量的使用 1.3 变量的作用域和生命周期 1.3.1 作用域 1.3.2 生命周期 2. 常量 2.1 字面 ...

  2. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  3. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算...

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  4. C语言怎么提出大写字母,c语言函数toupper()如何将小写字母转换为大写字母

    c语言函数toupper()如何将小写字母转换为大写字母?大小写字母怎么转换?函数需要引入的头文件:#include toupper()的定义:int toupper(int c); toupper( ...

  5. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

  6. 学习笔记7-C语言-进制转换、原返补、位运算、函数

    进制转换 为什么要使用二.八进制.十六进制?因为现在的CPU只能识别高低两种电流,因此只能对二进制数据进行运算二进制数据虽然可以直接被cpu识别,但不方便人们书写.记录,所以把二进制数据转换成八进制是 ...

  7. C语言笔记-进制转换

    一.进制转换     为什么要使用二进制.八进制.十进制.十六进制         因为现在的CPU只能识别高低电平,只能对二进制数据进行计算         虽然二进制的数据可以直接被CPU识别计算 ...

  8. 从0开始学习C语言————数组、进制转换、函数

    数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; ...

  9. C语言简介之进制转换,原码、反码、补码,位运算符,函数

    文章目录 进制转换: 十进制转二进制:(转其他进制) 二进制转十进制: 二进制转八进制: 二进制转十六进制: 原码.反码.补码: 位运算符: & ,|, ~, ^, <<, > ...

最新文章

  1. 谷歌ALBERT模型V2+中文版来了:之前刷新NLP各大基准,现在GitHub热榜第二
  2. MySQL复制经常使用拓扑结构具体解释
  3. python开发环境配置_百度资讯搜索_python开发环境配置
  4. python内存管理变量_Python变量内存管理
  5. java this.name= name_thread(this, ThreadName)对于Java中这个语句,this是什么?
  6. java 日期_Java中的日期操作
  7. 竞价排名才是万恶之源
  8. hdu 1186(搜索+HASH)
  9. css几个居中的方法
  10. 读书笔记-《JavaScript高级程序设计》-第2章 在HTML中使用JavaScript
  11. NOIP2018初赛 解题报告
  12. UVA 10474 Where is the Marble?
  13. Engineering Mathematic I -- Notes 1
  14. uni-app背景图片全屏
  15. java无响应_Java HttpClient请求无响应解决方案
  16. flink on yarn使用第三方jars的方法如何查看进程所持有jar包
  17. 正大国际期货:外盘黄金交易中如何用MACD指标捕捉波段
  18. 基于arduino超声波测距学习
  19. 数据结构物理存储方式
  20. 散点图 计算 java_怎么在excel中计算散点图的公式

热门文章

  1. 14、MySQL位运算符
  2. HDU 1009 - FatMouse' Trade (部分背包问题)
  3. C/C++将十进制数转为二进制并输出
  4. 1116 c语言竞赛 (20 分)【难度: 一般 / 知识点: 模拟】
  5. 1021 Deepest Root (25 分) 【难度: 中 / 知识点: 树的直径 连通块】
  6. MySQL中的默认值处理
  7. MySQL中如何插入数据(DML)
  8. MySQL带EXISTS关键字的子查询
  9. SpringBoot动态生成多个Excel文件以压缩包.zip格式下载
  10. 能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮,真TMD香!