C++ day03 基础 变量常量,数据类型,操作符,顺序结构

本文介绍了C++的基础知识,包括变量与常量的定义、数据类型的分类和转换,以及各类运算符的用法。详细讲解了变量的初始化和合法命名规则,常量的定义方式,数据类型如整型、实型、字符型的特性,并探讨了隐式和显式数据类型转换。此外,还涵盖了算术、关系、逻辑、位运算符的使用,以及程序的顺序结构,如if-else和switch语句的应用。
摘要由CSDN通过智能技术生成

一 、C++ 变量与常量

变量(variable)即在程序中被定义,可以被改变的一个抽象概念。
常量 (constant) 即在程序中被定义,不可以改变的一个抽象概念。

1.变量

在程序中广泛使用,一般用于存储各种数据。

定义变量
[数据类型] 变量名;

上述语句是定义一个变量的基本方法。例如

int var;

我们可以在定义一个变量的时候,给与它一个值,这通常被称为变量的初始化(initialization)。如

int var = 100;
合法的变量名

一个变量名是合法的必须遵循以下规则:

  1. 以字母或下划线_开头。
  2. 不能使用C++的保留字,如int,double,const 等1

遵守下列规则的是一个优雅的变量名:
1.使用驼峰写法或使用下划线分割意义。
例如

string yourNeckName;
string your_neck_name;

第一个就是驼峰写法,首字母小写,其后每个单词首字母大写。
第二个是用下划线分割的写法。

2.保证可读性,不要过长,可以使用各种显而易见的缩写。
例如

int _______,____;
string myMothersFathersFathersFathersname,myFathersMothersMothersName;

都不是优雅的变量名。

3.不要使用拼音。
例如

int shuzi;
string mingzi;

都是很low的变量名。

2.常量

常量在程序中运用较少,其最大的优点在于不可被修改,(如果被修改就不能通过编译。)
常量的定义有两种方式
1.C语言宏定义

#define  [标识符]  [字符串]

例如

#define PI 3.14159

2.c++ 使用const标识符定义

const [数据类型] [常量名] = [];

例如

const double PI = 3.14159;

常量名的定义同样要遵循变量名的定义方法,不过常量名一般使用全大写的写法,方便和变量区分。

二、数据类型

c++的数据类型大致可以分为四种

  1. 整(数)形 int,long int
  2. 实型 double
  3. 字符型 char
  4. 自定义类型

以下只介绍常用的几个类型2

  1. 整形
数据类型名称占用字节取值范围
short(int)短整型2~432768
int整形占用字节42,147,483,647(21亿多)
long (int)长整形占用字节 4~89,223,372,036,854,775,807(1019数量级)
long long (int)超长整形占用字节 8同上

还有类似 unsigned int的无符号型,占用字节相同,取值范围*2(去掉负数部分)
提示: 如果忘记了数据类型的内存占用量,可以使用以下形式查询:

cout << sizeof(类型名称) << endl;

2.实型

数据类型名称占用字节有效位数
float(单精度)浮点数46~7位
double双精度浮点数815~16
long double长双精度浮点数1618~19位
bool布尔型1

布尔值只有True(1) 或 False(0)

  1. 字符型
    普通字符又叫字符常量,采用ASCII编码方式,例如A对应位65,0对应的是48。3

4.自定义类型
自定义类型是面向对象编程的概念。

class MyType{
	//something
}

这个概念我们以后再讲。

三、数据类型的转换。

隐式转换

这种转换通常发生在变量赋值,或者计算的时候。
例如

double a;
a = 1;

此时a实际上就转化成了1.0;

int a = 1;
double b = 2.5;
cout << a+b << endl;

程序输出:

3.5

也就是说,在计算过程中,int类型数据转换为double类型数据。
上述转换关系可以概括为:
(short,char)→int →unsigned → long →unsigned long →[(float)→double ]→ long double

但是存在某些情况,会导致精度降低。例如:

int a;
a = 2+1.2;

这时a的值为3。(int类型,默认向下取整)

显式转换
C语言的转换方式
(double)5;

上述语句实际上相当于5.0(double类型)。

C++新的方式
int(2.5+3);

上述语句实际上和C语言的一样,但是更为美观。

注意 显示转换如果要不至于数据损失,应当向更高精度的类型转换,和上面的转换关系一样。如果是上述语句,会导致精度降低,舍去了0.5。

四、操作符。

操作符即运算符。

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 赋值运算符
  6. 杂项运算符
1.算术运算符

算术运算符提供了基本数学操作。
C++的运算符包括:

符号名称
+加运算符
-减运算符
*乘运算符
/除运算符
%模(取余)运算符
++自增运算符
自减运算符

注意:

  • 乘方操作可以通过在<cmath>库中的函数Pow(x,y);实现。 Pow函数返回的是double类型;
  • 严格的说,模运算和取余运算有细微的区别。这种区别体现在对一个负数取余(或模)时的。取余运算是像负无穷舍入的,而取模运算是向0舍入的。
    C++中的取模运算实际上是取余预算,而Python的取模运算就是取模运算,从下列运算结果可以发现。
cout << -3%4 << endl;

输出

-3
print(-3%4);

输出

1
2.关系运算符

关系运算符用以比较两个值的大小关系,它的“返回值”是布尔值。

符号名称
>大于运算符
<小于运算符
==等于运算符
>=大于等于运算符
<=小于等于运算符
!=不等于运算符

需要注意,等于运算符是两个等号。如果写成一个等号,则是赋值运算符。这在编译程序的时候通常不会报错,因此极易发生错误。

3.逻辑运算符

逻辑运算符用以进行逻辑运算,“返回”布尔值。

符号名称
&&
||
!非(取反)

逻辑运算是高中数学选修2-1的内容。这里有简单的介绍。

4.位运算符

位运算符可以在二进制位的层次进行数据操作。
二进制就是逢二进一,这是高中数学必修三的内容。
例如十进制数 10 10 10的二进制表示就是 101 0 ( 2 ) 1010_{(2)} 1010(2)

符号名称
&按位与
|按位或
^按位异或
~按位非
<<二进制左移
>>二进制右移

二进制左右移:

原数(二进制)操作结果(二进制)
101100<<11000
101100>>1010
注意

二进制左移的一个常见的操作是求 2 n 2^n 2n
2 n 2^n 2n 相当于 1 < < n 1<<n 1<<n

cout << (1<<2) << endl;
5.赋值运算符

下列符号并不全(其实是我懒)

符号名称
=赋值
+=加且赋值

其余算术运算符、位运算符都以此类推。

6.杂项运算符

杂项运算符最主要的是三目(三元)运算符:

a = b ? a : b;

巧记:a = b 吗? 如果真 则 a : 如果假 则 b;
这个运算符有时候能够节约很多时间。

程序的顺序结构

if-else语句

以下是if-else语句的基本格式(单条件)。

	if(条件){
		如果为真
		语句...
	}else{
		如果为假
		语句...
}

如果if后只有一句话,可以省略花括号

if(条件)
	语句;

如果有多种情况出现(双条件),则可以使用if - else if-else 语句,如下。

if(条件一)
	语句;
else if(条件二)
	语句;
else
	语句;

可以看出 三目运算符 有时可以代替if-else语句。这样写常常显得优雅而美观

switch 语句

switch语句可以对多种状况进行不同处理。其形式如下

switch(表达式)
{
	case1:
		语句1;
		break;

	case2:
		语句2;
		break;
}

需要注意:

  1. case后的冒号
  2. 写break。
    为什么必须有break?使用break可以在执行完一个case后直接跳出,而不是接着向下执行。
    但有的时候不能写break。

其他的一些东西

  1. 一个题库(oj)的推荐:
    洛谷
  2. 万能头文件
#include <bits/stdc++.h>

练习题

  1. 请说明以下变量名的合法性
    name
    1name
    _myName
    ______
    double
  2. 请说明下列程序输出的值
    #include <iostream>
    using namespace std;
    int main(){
    	cout << int(3.6+5.9) << endl;
    	cout << double(3.6+5.9) << endl;
    	return 0;
    }
    

3.请编写一个c++程序,实现下面的需求:
要求输入一个整数n,若这个数是奇数,则输出"odd",否则(是偶数)输出"even"。
输入样例:
3
输出样例:
odd

习题参考答案
  1. 合法、不合法、合法、合法、不合法。
  2. 输出:
   9
   9.5
  1. A probable version
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
	cin >> n;
	switch(n%2) {
		case 1:
			cout << "odd";
			break;
		case 0:
			cout << "even";
			break;
	}
	return 0;
}

  1. C++的保留字 ↩︎

  2. C++的数据类型 ↩︎

  3. ASCII码对照表 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值