C++基础知识

c++的数据类型与常量

  • C++的各种数据类型

    1、基本类型:整型(短整型short int 整型int 长整型long int)、字符型(char)、浮点型(单精度型float 双精度double 长双精度long double)、布尔型
    2、派生类型:指针类型(*)、枚举类型(enum)、数组类型([])、结构体类型(struct)、共用体类型(union)、类类型(class)
    3、空类型(void)

  • 常量的分类:

    1、数值常量:整型、浮点型
    2、字符常量:普通字符常量、转义字符常量、字符串常量;
    3、符号常量:宏定义:#define PRICE 30
    在这里插入图片描述

c++的变量

变量一般包括变量的类型、名字和变量的值。变量的定义为:

定义格式:数据类型 变量名表列;

C++规定变量的名字只能由数字、字母、下划线这么三种字符组成。而且第一个字符不能是数字,必须是字母或者下划线。
变量在定义的时候就可以为其赋初始值,称为变量的初始化:例如:

int num = 5;
char ch = 'a';
float a = 1.2, b = 2.6, c;

常量,就是值不能改变,变量,就是值可以改变,常变量是变量在赋初值之后就不能改变了,即要求定义的时候必须赋值。其定义如下

const int sum = 100;

const常变量和#define宏定义的区别
https://blog.csdn.net/sinat_20265495/article/details/52945960

c++的运算符

  • C++中提供了很多种运算符:

■ 算术运算符:
+(加)、-(减)、*(乘)、/(除)、%(整除求余)、++(自加)、–(自减)
■ 关系运算符:
<(小于)、>(大于)、==(等于)、>=(大于或等于)、<=(小于或等于)、!=(不等于)
■ 逻辑运算符:
&&(逻辑与)、||(逻辑或)、!(逻辑非)
■ 位运算符:
<<(按位左移)、>>(按位右移)、&(按位与)、|(按位或)、^(按位异或)、~(按位取反)

■ 赋值运算符:(=号及其扩展赋值运算符)
■ 条件运算符:(?:)
■ 逗号运算符:(,)
■ 指针运算符:(*)
■ 引用运算符和地址运算符:(&)
■ 求字节数运算符:(sizeof)
■ 强制类型转换运算符:((类型) 或 类型())
■ 成员运算符:(.)
■ 指向成员的运算符:(->)
■ 下标运算符:([])

  • 混合类型运算规则:

在表达式遇到不同数据类型的混合运算时,要求不同类型的数据要先转换成同一类型然后才能进行运算。默认编译器会有个规则进行自动转换:
自动转换遵循以下规则:

  1. 若参与运算的两个参数类型不同,则先转换成同一类型,然后再进行运算;
  2. 按照数据长度增加的方向进行(即:由 少字节类型 向 多字节类型 转换),以保证精度不丢失;
  3. 所有的浮点运算都是以双精度进行的,即使仅含 float 单精度量运算的表达式,也要先转换成 double 类型,再作运算;
  4. char 类型 和 short 类型参与运算时,必须先转换成 int 类型,也就是说最小的运算整形单位是 int;
  5. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型(右随左变)。如果右边的数据类型的长度比左边长时,将丢失一部分数据,这样会降低精度,例如:int x = 2.5;
    类型自动转换规则
    在这里插入图片描述
  • 强制类型转换运算符

    强制类型转换有两种表达形式,下面举例说明:

int x = 2;
float y = 3.6;
x = (int)y;
y = float(x);

得到

x=2.0;
y=3
  • 自增++和自减–运算符:
    举例说明
int x = 2;
int y = x++;
int z = ++y;

不管是 x++ 还是 ++x 执行完之后,x变量自己的值都进行了+1,但是针对整个 x++或者++x的值就不一样了。x++执行之后,这个表达式的值还是x+1之前的值,++x执行之后,这个表达式的值是x+1之后的值。
所以:int y = x++; 执行之后,x的值为3,y的值为2;int z = ++y; 执行完之后,y的值是3,z的值也是3,

把一个负数赋值给一个无符号的数也会发生问题的,例如:
unsigned int x = -2; 这样的问题也不应该发生。

赋值运算符和赋值表达式

  • 赋值运算符:

int x = 3.5; 赋值完了之后 3.5 这个浮点类型的值肯定丢失小数点部分,变成了整形的3;
float y = 2; 赋值完了之后 2 的值不会有任何丢失,不过变成了浮点类型的数:2.0;
不仅仅有小数点部分的丢失,取值范围有可能越界,例如:
short 能表示的范围是:-32768~+32767,short q = 50000;

总结:赋值运算的时候要注意的两点:精度的丢失,取值范围的越界。

  • 复合赋值运算符

支持这类操作的运算符主要有
+=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=

  • 逗号表达式
    所有以逗号间隔的表达式都进行计算,各个表达式的计算顺序按照从左往右。整个表达式的值是最后一个逗号表达式的值。例如:
int x = 0;
int y = 0;
x +=2, y+= 3;
int q = ((x++), (++y));

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值