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
来源: https://blog.csdn.net/zlhyy666666/article/details/104586698
c语言变量名必须用小写 常量用大写,day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...相关推荐
- 【C语言】变量和常量、数据类型、进制转换、数据存储
目录 1. 变量 1.1 变量的分类 1.1.1 局部变量 1.1.2 全局变量 1.2 变量的使用 1.3 变量的作用域和生命周期 1.3.1 作用域 1.3.2 生命周期 2. 常量 2.1 字面 ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算...
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- C语言怎么提出大写字母,c语言函数toupper()如何将小写字母转换为大写字母
c语言函数toupper()如何将小写字母转换为大写字母?大小写字母怎么转换?函数需要引入的头文件:#include toupper()的定义:int toupper(int c); toupper( ...
- C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换
描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...
- 学习笔记7-C语言-进制转换、原返补、位运算、函数
进制转换 为什么要使用二.八进制.十六进制?因为现在的CPU只能识别高低两种电流,因此只能对二进制数据进行运算二进制数据虽然可以直接被cpu识别,但不方便人们书写.记录,所以把二进制数据转换成八进制是 ...
- C语言笔记-进制转换
一.进制转换 为什么要使用二进制.八进制.十进制.十六进制 因为现在的CPU只能识别高低电平,只能对二进制数据进行计算 虽然二进制的数据可以直接被CPU识别计算 ...
- 从0开始学习C语言————数组、进制转换、函数
数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; ...
- C语言简介之进制转换,原码、反码、补码,位运算符,函数
文章目录 进制转换: 十进制转二进制:(转其他进制) 二进制转十进制: 二进制转八进制: 二进制转十六进制: 原码.反码.补码: 位运算符: & ,|, ~, ^, <<, > ...
最新文章
- 谷歌ALBERT模型V2+中文版来了:之前刷新NLP各大基准,现在GitHub热榜第二
- MySQL复制经常使用拓扑结构具体解释
- python开发环境配置_百度资讯搜索_python开发环境配置
- python内存管理变量_Python变量内存管理
- java this.name= name_thread(this, ThreadName)对于Java中这个语句,this是什么?
- java 日期_Java中的日期操作
- 竞价排名才是万恶之源
- hdu 1186(搜索+HASH)
- css几个居中的方法
- 读书笔记-《JavaScript高级程序设计》-第2章 在HTML中使用JavaScript
- NOIP2018初赛 解题报告
- UVA 10474 Where is the Marble?
- Engineering Mathematic I -- Notes 1
- uni-app背景图片全屏
- java无响应_Java HttpClient请求无响应解决方案
- flink on yarn使用第三方jars的方法如何查看进程所持有jar包
- 正大国际期货:外盘黄金交易中如何用MACD指标捕捉波段
- 基于arduino超声波测距学习
- 数据结构物理存储方式
- 散点图 计算 java_怎么在excel中计算散点图的公式
热门文章
- 14、MySQL位运算符
- HDU 1009 - FatMouse' Trade (部分背包问题)
- C/C++将十进制数转为二进制并输出
- 1116 c语言竞赛 (20 分)【难度: 一般 / 知识点: 模拟】
- 1021 Deepest Root (25 分) 【难度: 中 / 知识点: 树的直径 连通块】
- MySQL中的默认值处理
- MySQL中如何插入数据(DML)
- MySQL带EXISTS关键字的子查询
- SpringBoot动态生成多个Excel文件以压缩包.zip格式下载
- 能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮,真TMD香!