首页 > 其他分享 >02-常量、二进制、数据类型

02-常量、二进制、数据类型

时间:2024-03-31 14:33:27浏览次数:23  
标签:02 字面 二进制 double 数据类型 long int 类型

第4章 常量

1. 常量特点
   程序运行时,其值不能改变的量,即为常量。

2. 常量分类
   字面量常量
   标识符常量

3. 常量定义方式(标识符常量)
   ① #define 宏定义
   ② const 关键字(C99标准增加)
 

4. 两种定义方式区别
   类型检查: const 编译阶段会进行类型检查,#define 方式不会
   执行时机: const 在程序执行的时在内存中创建; #define 在预处理阶段进行文本替换

第5章 二进制

1. 进制

(1)常见进制

二进制、十进制、十六进制

(2)不同进制的表示

默认十进制
0b开头表示二进制
0x开头表示十六进制

(3) 不同进制输出格式占位符

%d :十进制整数。
%x :十六进制整数。
%#x :显示前缀 0x 的十六进制整数。 ——x的大小写
%#X :显示前缀 0X 的十六进制整数。

1711801370486

2. 进制转换

注:一般进制转换,小进制转大进制 × ,大进制转小进制 ÷

八四二一法: 是一种快速转换数字的方法,主要用于二进制、八进制和十六进制之间的转换。

(1)二进制与十进制之间相互转化

8421公式:

2^0=1
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256
2^9=512
2^10=1024   ——对应凑整
二进制转十进制:
1011=1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
	=8+0+2+1
	=11
十进制转二进制:(用2的几次方的得数凑整)
57=2^5 + 2^4 + 2^3 + 2^0
  =32+16+8+1
  =100000+10000+1000+1
  =111001

(2)十六进制和十进制(了解)

(3)二进制与十六进制之间的相互转化(重点)

4个二进制位相当于1个十六进制位

1111——>15——>F

3. 原码 反码 补码

正数和0:
原码、反码、补码都一样

负数:
原码:符号位为1,其它转为对应的二进制数字即可
反码:原码基础上,符号位不变,其他位取反
补码:反码基础上,+1

注:计算机上存储的是补码

补码计算器:https://www.lddgo.net/convert/number-binary-code

第 6 章 数据类型

bit——比特(b)

byte——>字节(B)

1. 整数类型

(1)整型划分

类型名称 存储长度
short int 短整型 2字节
int 整型 4字节
long int 长整型 4或8字节
long long int 长长整型 8字节

注:① 每种类型又分为有符号(signed)和无符号(unsigned)

​ ② 默认表示有符号,如 int 表示 signed int

​ ③int、signed 都可省略

​ int = signed int =signed;short = signed short int

(2)字面量后缀(不需要记)

数据类型 字面量后缀 数据类型 字面量后缀
int 没有 unsigned int U
long L unsigned long UL
long long LL unsigned long long ULL

注:① 字面量后缀不区分大小写

​ ② U和L可以自由组合,UL等同于LU,ULL等同于LLU

​ ③short 与 int 字面量后缀使用相同

(3)格式占位符

数据类型 格式占位符 数据类型 格式占位符
int %d unsigned int %u
short %hd unsigned short %hu
long %ld unsigned long %lu
long long %lld unsigned long long %llu

注:数据类型与格式占位符要一一对应

1711804755080

(4)等宽整数类型 ——只是自行定义的,为了增加代码的适配性,提高程序的可移植性

位于标准库头文件 stdint.h

int8_t		uint8_t
int16_t		uint16_t
int32_t		uint32_t
int64_t		uint64_t


    int8_t n1 = 100;	// 8个二进制位 1 字节的有符号整数
    uint8_t n2 = 101;	// 8个二进制位 1 字节的无符号整数
    
    int32_t n3 = 10;	// 32个二进制位 4 字节的有符号整数
    uint32_t n4 = 11;	 // 32个二进制位 4 字节的无符号整数

2. 浮点类型 ——常用的是double

(1)浮点类型划分

数据类型名 存储长度 有效小数位数
float 单精度 4 6~9
double 双精度 8 15~18
long double 长双精度 10~16 18或更多

都有符号

默认是double

有效小数位显示的情况:

float、double、Long double的输出显示的有效小数位:默认输出6位

注:printf("float: n3=%.2lf \n",n3); //在%后加入 .2 就表示输出默认显示几位小数,默认显示6位小数,不过在计算机上存储的是对应的存储长度 及 有效小数位,只是输出显示的设置罢了

1711864595708

(2)浮点类型字面量后缀(不需要记)

注:字面量后缀加不加都可以

类型 字面量后缀
float F
double 没有
long double L

注:字面量后缀不区分大小写!

小数0.55前的0可以省略,等同于 0.55

(3)格式占位符

数据类型 十进制形式格式占位符 科学计数法格式占位符
float %f %e
double %lf %le
long double %Lf %Le
分别对应两种形式的占位符使用:
                      %.3 小数保留3位                      %e 保留一个整数位

注:printf() 输出的时候,%f 可以表示 float 和 double

​ scanf() 获取输入的时候,只有 %lf 表示double

​ 科学计数法说明:double n2 = 5.2e2; //5.2*10^2

1711851594711

1711851728018

(4) 浮点类型存储原理

浮点数会分成 符号位、指数位、尾数位进行存储

3. 字符类型

1. 字面量表示
   单引号

2. 转义字符
   \n  	——换行符
   \'	——表示'
   \\	——表示\
   \t	——表示制表符

3. 字符类型的本质
   本质是一个字节的整数,分为 char 和 unsigned char
   
4.格式占位符
	使用%c表示char类型。

5. ascII 码  *(记)
   A 65
   a 97

char字符类型中数字表示的含义,对应于ASCII
1、
    char c9 = 199;  //199相对于char类型是指的ASCII值,199超过了ASCII值的范围
    char c10 = 65;  //65在ASCII中对应的是A,而1对应的是空白
    
2、1对应的是ASCII值为 空白 ,所以输出显示的也是空白

1711853471514

4. 布尔类型

1. 第一种方式
   C89标准,使用宏定义(#define	)

2. 第二种方式
   C99标准,添加 _Bool 类型

3. 第三种方式
   C99标准,标准库头文件 <stdbool.h>
   bool true false

总结:三种方式都可以修改布尔类型的变量,不过分为两种:1、第一种为一种,可以直接修改布尔类型变量的值

2、第二、三为一种,修改时:0为0,其他非零都为1

第一种 使用宏定义
#include <stdio.h>

#define BOOL int
#define TRUE 1
#define FALSE 0

int main()
{
    //定义布尔类型的变量
    BOOL is_ok =TRUE;
    BOOL is_pass = FALSE;

    //is_pass可以被修改
    is_pass =-6;
    printf("is_ok=%d, is_pass=%d \n",is_ok,is_pass);
    

    //条件判断
    if(is_ok)
    {
        printf("OK! \n");
    }
    else
    {
        printf("不OK!\n");
    }

    if(is_pass)
    {
        printf("PASS!\n");
    }
    else
    {
        printf("不PASS!\n");
    }
}
第二种 添加 _Bool 类型
#include <stdio.h>

int main()
{
    //定义布尔类型的变量
    _Bool is_ok = 1;
    _Bool is_pass = 0;
第三种 标准库头文件 <stdbool.h>
#include <stdio.h>
#include <stdbool.h>

int main()
{
    // 定义布尔类型的变量
    bool is_ok = true;
    bool is_pass = false;

附录

修改配置,提高警告等级

打开 .vscode 文件夹下的 tasks.json 文件,添加如下选项:

"-Wall"

最终效果如下:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:\\Program Files\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-Wall",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

下图示,橙色框中的两个要挨在一起

1711800783297

标签:02,字面,二进制,double,数据类型,long,int,类型
From: https://www.cnblogs.com/petard/p/18106709

相关文章

  • DEVASC提示remote: Support for password authentication was removed on August 13,
    意思是:对密码身份验证的支持已于2021年8月13日移除。解决:在git仓库文件夹下使用ssh密钥验证:gitremotermorigin   ---将名为"origin"的远程仓库从本地Git仓库中移除[email protected]:GithubName/repositoryName.git   ---将名......
  • 20240331_搜索练习
    目录P3206DungeonMasterP3207LakeCountingP3208TheCastleP896仙岛求药P429【基础】走迷宫P2465迷宫问题P952【入门】算24点P3206DungeonMaster这题是一个三维迷宫,其中用‘.’表示空地,‘#’表示障碍物,‘S’表示起点,‘E’表示终点,求从起点到终点的最小移动次......
  • SMU 2024 spring 天梯赛2
    SMU2024spring天梯赛27-1计算指数-SMU2024spring天梯赛2(pintia.cn)#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn,ans=1;cin>>n;......
  • 【洛谷P1036】 [NOIP2002 普及组] 选数
    一、题目:二、解题思路:本文章采用的解决方法是递归与DFS(深度优先搜索)。以下图是思路图:1.首先-确定位置题目说4个数字取三个数,所以考虑的只有三个位置和这三个位置分别放什么数值。从第一个位置开始放数。2.其次-开始放数分为4种可能,第一位置可以先放3,那么第二个位置......
  • SMU 2024 spring 天梯赛3
    SMU2024spring天梯赛37-1重要的话说三遍-SMU2024spring天梯赛3(pintia.cn)I'mgonnaWIN!I'mgonnaWIN!I'mgonnaWIN!7-2两小时学完C语言-SMU2024spring天梯赛3(pintia.cn)#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;......
  • 【JavaParser笔记02】JavaParser解析Java源代码中的类字段信息(javadoc注释、字段​​
    这篇文章,主要介绍如何使用JavaParser解析Java源代码中的类字段信息(javadoc注释、字段名称)。目录一、JavaParser依赖库1.1、引入依赖1.2、获取类成员信息(1)案例代码<......
  • CCF-CSP真题《202309-3 梯度求解》题解
    题目string转longlong忘记处理负数卡了半天,服了#include<iostream>#include<cstdio>#include<cstring>#include<sstream>typedeflonglongll;usingnamespacestd;intn,m,temp;lla[302];stringf,x,b;llmod=1e9+7;structnode{ stringcon; n......
  • 吴恩达2022机器学习专项课程(一) 4.4 学习率
    问题预览/关键词学习率太小有什么影响?学习率太大有什么影响?如果成本函数达到局部最小值,使用梯度下降还能继续最小化吗?为什么学习率固定,而最小化成本函数的步幅却越来越缓?如何选择合适的学习率?笔记1.学习率太小学习率太小,导数项会乘以非常小的数,梯度下降速度过慢,不符合尽......
  • DASCTF X CBCTF 2023
    一、justpaint1.先是压缩包密码爆破,密码为11452,然后开始代码审计,发现是一个线性的神经网络。![image-20231024143116043](E:\HDU\CTF\平常做题WP\DASCTFXCBCTF2023.assets\image-20231024143116043.png)源代码如下:importtorchimporttorch.nnasnnimportnumpyasnpi......
  • 2024年最新个人免签易支付源码网站对接支付教程
    2024年最新个人免签易支付源码网站对接支付教程_v免签对接在2024年,随着互联网技术的不断发展,个人免签易支付源码网站成为了越来越多人的选择。这种网站可以方便快捷地进行支付,避免了传统支付方式中的繁琐流程。下面我们将为您介绍如何将个人免签易支付源码网站对接支付教程,帮助......