首页 > 编程语言 >C++ 笔记(一)数据类型(1)

C++ 笔记(一)数据类型(1)

时间:2024-07-28 22:08:46浏览次数:17  
标签:操作数 long int 从左到右 数据类型 笔记 运算符 C++ 赋值

1 简单的变量

变量名命名规则如下

  1. 变量名称可以包含字母、数字和下划线(_)。
  2. 变量名称的第一个字符必须是字母或下划线。
  3. 区分大小写,即大写字母和小写字母被认为是不同的字符。
  4. 不能使用C++的关键字作为变量名。

2 数据类型

2.1 整型

short、int、long和long long

这四种类型都是整型,唯一的不同是范围的区别。受到底层硬件的影响,C++当中这四种类型的范围并不是固定的。由于要兼容各种不同类型的系统与硬件,所以没有办法对类型进行统一。

为了避免引起不便,C++提供了一种灵活的标准,它确保了每一种类型的最小范围。

  • short至少16位
  • int至少与short一样长
  • long至少32位,且至少与int一样长
  • long long至少64位,且至少与long一样长

可以使用如下代码,sizeof()函数打印长度,单位byte;

#include <iostream>
int main() {
    std::cout << sizeof(short) << std::endl;
    std::cout << sizeof(int) << std::endl;
    std::cout << sizeof(long) << std::endl;
    std::cout << sizeof(long long) << std::endl;
    return 0;
}

上述四种数据类型都是有符号数,即可以表示正数和负数;若要存储无符号数,可使用如下定义方法,采用unsigned关键字;

//无符号数定义方法
unsigned short a;
unsigned int b;
unsigned long c;
unsigned long long d;

对于整型数据类型,头文件limits中还定义了相关类型的部分宏定义,例如最大值、最小值等;

int a = INT_MAX;	//int 最大值
int b = INT_MIN;	//int 最小值
int c = SHRT_MAX;	//short 最大值
int d = SHRT_MIN;	//short 最小值

2.2 字符类型

char类型;一般长度是1个字节,能够表示ASCII码的字符,也能表示0-255的整型数值,且可以互相转换;

char a = 'A';
char b = 65;//也表示字母A

2.3 布尔类型(bool)

bool类型一般用于逻辑运算,可以表示truefalse,可以定义如下

bool is_ready = true;
bool is_true = false;

2.4 const限定符

const是常量限定符,被该关键字修饰的变量表示常量,无法修改;必须在定义常量的时候进行初始化;

const int months = 12;

2.5 浮点类型

float、double、long double;三种类型的区别在于表示浮点数的大小范围;

float a = 5.20;
double b = 3.14;

2.6 类型转换

2.6.1 自动转换

一般情况下,不同的数据类型可以进行转换,且范围小的转向范围大的类型不会有问题,范围大的转换成范围小的可能出现问题,这但需要注意;

一般运算中,会自动进行数据转换方便进行运算

2.6.2 强制转换

使用方法如下:

int a = 100;
long b = (long)a;//将int 强制转换成long类型

2.7 运算符

2.7.1 算术运算符

假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符 描述 实例
+ 把两个操作数相加 A + B 将得到 30
- 从第一个操作数中减去第二个操作数 A - B 将得到 -10
* 把两个操作数相乘 A * B 将得到 200
/ 分子除以分母 B / A 将得到 2
% 取模运算符,整除后的余数 B % A 将得到 0
++ 自增运算符,整数值增加 1 A++ 将得到 11
-- 自减运算符,整数值减少 1 A-- 将得到 9

2.7.2 关系运算符

假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符 描述 实例
== 检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 不为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (A > B) 不为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (A < B) 为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 (A >= B) 不为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 (A <= B) 为真。

2.7.3 逻辑运算符

假设变量 A 的值为 1,变量 B 的值为 0,则:

运算符 描述 实例
&& 称为逻辑与运算符。如果两个操作数都 true,则条件为 true。 (A && B) 为 false。
|| 称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。 (A || B) 为 true。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。 !(A && B) 为 true。

2.7.4 位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

运算符 描述 实例
& 按位与操作,按二进制位进行"与"运算 (A & B) 将得到 12,即为 0000 1100
| 按位或运算符,按二进制位进行"或"运算 (A | B) 将得到 61,即为 0011 1101
^ 异或运算符,按二进制位进行"异或"运算 (A ^ B) 将得到 49,即为 0011 0001
~ 取反运算符,按二进制位进行"取反"运算 (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
<< 二进制左移运算符(左边的二进制位丢弃,右边补0)) A << 2 将得到 240,即为 1111 0000
>> 二进制右移运算符(正数左补0,负数左补1,右边丢弃) A >> 2 将得到 15,即为 0000 1111

2.7.5 赋值运算符

下表列出了 C++ 支持的赋值运算符:

运算符 描述 实例
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A
<<= 左移且赋值运算符 C <<= 2 等同于 C = C << 2
>>= 右移且赋值运算符 C >>= 2 等同于 C = C >> 2
&= 按位与且赋值运算符 C &= 2 等同于 C = C & 2
^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2
|= 按位或且赋值运算符 C |= 2 等同于 C = C | 2

2.7.6 杂项运算符

下表列出了 C++ 支持的其他一些重要的运算符。

运算符 描述
sizeof sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
, 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
.(点)和 ->(箭头) 成员运算符用于引用类、结构和共用体的成员。
Cast 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
& 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
* 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。

2.7.7 运算符优先级

注意:在编程时能加括号尽量加括号,避免优先级判断错误,导致逻辑不符合预期;

类别 运算符 结合性
后缀 () [] -> . ++ - - 从左到右
一元 + - ! ~ ++ - - (type)* & sizeof 从右到左
乘除 * / % 从左到右
加减 + - 从左到右
移位 << >> 从左到右
关系 < <= > >= 从左到右
相等 == != 从左到右
位与 AND & 从左到右
位异或 XOR ^ 从左到右
位或 OR | 从左到右
逻辑与 AND && 从左到右
逻辑或 OR || 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %=>>= <<= &= ^= |= 从右到左
逗号 , 从左到右

标签:操作数,long,int,从左到右,数据类型,笔记,运算符,C++,赋值
From: https://www.cnblogs.com/july18/p/18328936

相关文章

  • C++关键字——inline和auto
    目录一、前言 二、inline关键字(C++11)---多用于内联函数a.概念b.特性三、auto关键字(C++11)a.auto简介b.auto的使用细则c.auto不能推导的场景d.基于范围的for循环(C++11)一、前言C++总计63个关键字,我们先了解inline和auto这两个关键字。asmdoifreturntrycontinue......
  • 三种语言实现高精度加法(C++/Python/Java)
    题目给定两个正整数(不含前导00),计算它们的和。1≤整数长度≤100000C++#include<bits/stdc++.h>usingnamespacestd;vector<int>add(vector<int>&A,vector<int>&B){if(A.size()<B.size())returnadd(B,A);vector<int>C;......
  • AC 自动机学习笔记
    preface第一次写ACAM模版是2023.7.02,现在重新回顾了一下,还是有不少新的理解的,或者说一些概念更加清晰了。1.引入思考这样一个问题:给若干模式串,求询问串中出现了多少个模式串。暴力肯定是一一比对,复杂度是\(O(n^2)\)以上的,可以哈希一下,那复杂度就是\(O(n^2)\)。回想......
  • 互联网大裁员背景下C++程序员该如何突围?
    一、前言              近期遇到许多正在找工作的小伙伴感叹今年工作难找,往年互联网上升期的时候,北京互联网行业不光工资给的高,而且坑也多,就拿互联网前几大语言来说,20年北京区Java招聘岗位10万+,目前只有不到1万+,20年北京区python招聘岗位3万+,2024年4月份不到5......
  • C++从入门到起飞之——内存管理(万字详解) 全方位剖析!
    ......
  • 浅谈简单的数据结构1(树状数组 、线段树)(c++)
    *_*课间休息后的知识点轰炸树状数组引入给定长为n的序列a,q次操作,每次查询一段区间的和,或修改一个数的权值。1≤n,q≤5×10^5,0≤a_i≤10^9。分析如果没有修改操作,这是一道非常简单的前缀和题。假如我们修改前缀和数组,查询就还是O(1)的,是否可行呢?当然不行。考虑......
  • 浅谈图论中树及其相关知识点(树的遍历、直径、最近公共祖先)(c++)
    目录前言一.关于树二.树的遍历(一)遍历方式常见遍历1.DFS遍历2.BFS遍历二叉树遍历1.先序遍历2.中序遍历3.后序遍历(二)例题讲解1.P1030[NOIP2001普及组]求先序排列思路AC代码 2.P5908猫猫和企鹅思路AC代码  3.P1395会议思路AC代码三.树的直径(一)定......
  • Java中的基本数据类型和引用数据类型
    目录前提介绍数据类型的作用数据类型的分类(1)基本数据类型(四类八种)(2)引用数据类型类(Class)接口(Interface)数组(Array)字符串(String)枚举(Enum)前提介绍java是一种强类型语言,这就意味着在编译的时候,所有的变量的数据类型都必须明确指定,并且类型系统会强制执行类型检查数据类型的作用在ja......
  • 三种语言实现浮点数二分(C++/Python/Java)
    题目给定一个浮点数......
  • C++ 多态
    多态基本概念多态是C++面向对象三大特性之一多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定——编译阶段确定函数地址动态多态的函数地址晚绑定——运行阶段确......