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

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 || 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %=>>= <<= &= ^= |= 从右到左
逗号 , 从左到右
posted @   哈哈七月  阅读(22)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示