首页 > 编程语言 >【C++学习笔记一】变量与运算符

【C++学习笔记一】变量与运算符

时间:2024-11-12 13:20:03浏览次数:3  
标签:变量 int 笔记 运算符 C++ main 表达式 赋值

目录

一、C++输出数据

1.1 数据的分类

1.2 输出数据

二、注释

2.1 单行注释

2.2 多行注释

2.3 VS中的快捷键

三、变量

3.1 声明变量

3.2 变量的赋值

3.3 示例

四、常量

4.1 宏常量

4.2 const修饰的变量

4.3 示例

五、标识符的命名

5.1 C++命名规则

5.2 C++关键字

六、数据输入

6.1 用std::cin输入数据

6.2 示例

七、算术运算

7.1 运算符

7.2 自增与自减

7.3 赋值运算符

7.4 C++ 11初始化赋值

7.5 关系运算符

关系运算

示例

7.6 逻辑运算符

逻辑运算

示例

7.7 运算的优先级


一、C++输出数据

1.1 数据的分类

数据有数字、字符和字符串三种类型。

  1. 数字:直接书写,如:100、18.52、0、9;
  2. 字符:用半角的单引号包含的一个符号,如:'A'、'Z'、'0'、'9'、'~'、'+',汉字和全角的标点符号不是字符;
  3. 字符串:用半角的双引号包含的多个符号,如:"Hello World"、"我是一只傻鸟"、"西施"、"100"、"X"。

1.2 输出数据

  1. std::cout可以输出各种类型的数据;
  2. <<操作符可以拼接多个数据项;
  3. std::endl也可以用于换行;
  4. using namespace std;指定缺省的命名空间。

不使用std命名空间:

#include <iostream>

int main()
{
    // 用多个数据项输出超女信息,姓名:西施;年龄:25;体重:48.5;性别:X
    // std::cout << "姓名:西施;年龄:25;体重:48.5;性别:X\n";
    std::cout << "姓名:" << "西施" << ";年龄:" << 25 << ";体重:" << 48.5 << ";性别:" << 'X' << std::endl;
}

使用std命名空间:

#include <iostream>

// 指定缺省的命名空间。
using namespace std;

int main()
{
    // 用多个数据项输出超女信息,姓名:西施;年龄:25;体重:48.5;性别:X
    // std::cout << "姓名:西施;年龄:25;体重:48.5;性别:X\n";
    cout << "姓名:" << "西施" << ";年龄:" << 25 << ";体重:" << 48.5 << ";性别:" << 'X' << endl;
}

二、注释

在程序中添加的说明文字,对代码的流程或功能加以解释,方便自己和其他的程序员阅读和理解代码。

编译器在编译源代码的时候,会忽略注释。

2.1 单行注释

用两根反斜线打头,一般放在代码的上方,或者一行语句的末尾。

#include <iostream>

int main()
{
    // 用多个数据项输出超女信息,姓名:西施;年龄:25;体重:48.5;性别:X
    // std::cout << "姓名:西施;年龄:25;体重:48.5;性别:X\n";
    std::cout << "姓名:" << "西施" << ";年龄:" << 25 << ";体重:" << 48.5 << ";性别:" << 'X' << std::endl;
}

2.2 行注释

从/*开始,到*/结束,把一些内容夹住。

#include <iostream>

int main()
{
    /*
      测试多行注释
    */
    std::cout << "姓名:" << "西施" << ";年龄:" << 25 << ";体重:" << 48.5 << ";性别:" << 'X' << std::endl;
}

2.3 VS中的快捷键

添加注释:Ctrl+k+c

取消注释:Ctrl+k+u

三、变量

3.1 声明变量

变量在使用之前要先声明。

语法:数据类型 变量名

C++常用的数据类型有五种:整数(int)、浮点数(float和double)、字符(char)、字符串(string)和布尔(bool)。

变量在声明的时候可以赋初始值。

语法:数据类型 变量名=值

3.2 变量的赋值

语法:变量名=值

3.3 示例

#include <iostream>         // 包含头文件。

using namespace std;        // 指定缺省的命名空间。

// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
    // 整数(int)、浮点数(float和double)、字符(char)、字符串(string)和布尔(bool)。
    // 超女基本信息:姓名、年龄、体重、性别、颜值。
    // 声明变量,存放超女基本信息的数据项。
    string name = "西施";         // 姓名。
    int age = 25;                 // 年龄。
    double weight = 48.6;        // 体重(kg)。
    char sex = 'X';                // 性别:X-女;Y-男。
    bool yz = false;               // 颜值:true-漂亮;false-不漂亮。

    cout << "姓名:" << name << ",年龄:" << age << ",体重:" << weight
        << ",性别:" << sex << ",颜值:" << yz << endl;

    name = "冰冰";           // 字符串有双引号包含。
    age = 23;                // 整数直接书写。
    weight = 50.5;           // 浮点数直接书写。
    sex = 'X';                // 字符用单引号包含。
    yz = true;                // 布尔型取值只能是true和false,或1和0。

    cout << "姓名:" << name << ",年龄:" << age << ",体重:" << weight
        << ",性别:" << sex << ",颜值:" << yz << endl;
}

四、常量

常量是程序中固定不变的数据。

4.1 宏常量

一般在main函数的上面声明,用大写命名。

语法:#define 常量名 值

注意:宏常量也可以用在main函数中,只不过一般不会这么用。

4.2 const修饰的变量

在程序的任何地方都可以声明。

语法:const 数据类型 常量名=值

4.3 示例

#include <iostream>    // 包含头文件。

#define MONTHS 12	  // 一年中的月份数。
#define PI 3.14159   // 圆周率。

using namespace std;        // 指定缺省的命名空间。

// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
	const int days = 7;          // 一个星期中的天数。

	cout << "一年有" << MONTHS << "个月。" << endl;
	cout << "圆周率的值是:" << PI << endl;

	cout << "一个星期有" << days << "天。\n";
}

五、标识符的命名

5.1 C++命名规则

C++规定给标识符(变量、常量、函数、结构体、类等)命名时,必须遵守以下规则。

  1. 在名称中只能使用字母字符、数字和下划线
  2. 名称的第一个字符不能是数字
  3. 名称区分大写字符与小写字符;
  4. 不能将C++关键字用作名称;
  5. 以下划线和大写字母打头的名称被保留给编译器及其使用的资源使用,如果违反了这一规则,会导致行为的不确定性。
  6. C++对名称的长度没有限制,但有些平台可能有长度限制(64字符)。

C++提倡有一定含义的名称(望名知义)。

5.2 C++关键字

关键字也叫保留字,是C++预先保留的标识符。

每个C++关键字都有特殊的含义,用于声明类型对象函数命名空间等,程序中不能声明与关键字同名的标识符

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic_cast

int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace

static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

delete

goto

reinterpret_cast

try

六、数据输入

6.1 用std::cin输入数据

语法:std::cin>>变量名;

注意:

  1. a)布尔型变量的值在计算机内部用1(true)和0(false)存储;b)程序中可以书写true和false,也可以书写1和0,其它值将强制转换成1;c)用cin输入时可以填1和0,其它值也强制转换成1;d)用cout输出时只显示1和0,不显示true和false。
  1. 如果输入的数据与变量的数据类型不匹配,会导致行为的不确定性。

6.2 示例

#include <iostream>         // 包含头文件。

using namespace std;        // 指定缺省的命名空间。

// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
    string name;          // 姓名。
    cout << "请输入超女的姓名:";
    cin >> name;
    cout << "输入的超女姓名是:" << name << endl;

    int age;               // 年龄。
    cout << "请输入超女的年龄:";
    cin >> age;
    cout << "输入的超女年龄是:" << age << endl;

    double weight;        // 体重(kg)。
    cout << "请输入超女的体重(kg):";
    cin >> weight;
    cout << "输入的超女体重是:" << weight << endl;

    char sex;              // 性别:X-女;Y-男。
    cout << "请输入超女的性别(X-女;Y-男):";
    cin >> sex;
    cout << "输入的超女性别是:" << sex << endl;

    bool yz;               // 颜值:true-漂亮;false-不漂亮。
    cout << "请问输入超女的颜值(1-漂亮;0-不漂亮):";
    cin >> yz;
    cout << "输入的超女颜值是:" << yz << endl;
}

七、算术运算

7.1 运算符

运算符

描述

+

两个数相加。

-

一个数减另一个数。

*

两个数相乘。

/

分子除以分母。

%

取模运算,整除后的余数。

注意:

  1. 整数进行除法运算时,如果分母为0,程序将异常退出;
  2. 浮点数进行除法运算时,如果分母为0.0,将得到inf(infinite,无穷大);
  3. 两个整数进行除法运算时,将舍去小数部分,得到一个整数;
  4. 整数与浮点数进行除法运算时,得到的结果是浮点数;
  5. 进行除法运算时,在整数前面加(float)或(double)可以将整数转换为float或double类型;
  6. 取模运算只能用于整数(分母也不能为0)。

7.2 自增与自减

运算符

描述

++变量名

先把变量的值加1,然后再执行表达式。

变量名++

先执行表达式,再把变量的值加1。

--变量名

先把变量的值减1,然后再执行表达式。

变量名--

先执行表达式,再把变量的减1。

7.3 赋值运算符

运算符

描述

=

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;

求余数且赋值运算符,求两个操作数的模赋值给左边操作数,浮点数不适用取余数。

注意:

  1. 字符串(string)只能使用等号(=)赋值,不能使用其它的赋值运算符;
  2. 浮点数不能使用%=运算符;
  3. 等号(=)赋值运算符可以连续使用;
  4. 如果赋值运算符两边操作数的数据类型不同,C++将自动转换数据类型,可能会损失精度,也可能超出取值范围,如果转换不成功,编译时会报错。
#include <iostream>         // 包含头文件。

using namespace std;        // 指定缺省的命名空间。

// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
    int a = 10;
    int c = 20;

    // 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;
    // cout << "c=" << c << endl;

    a = c = 30; // 连续赋值
    cout << "a=" << a<<endl;
    cout << "c=" << c << endl;
}

7.4 C++ 11初始化赋值

  • 把值写在小括号中,等于号可以省略(C++标准)

int a=(15);  // 声明变量a,初始化值为15。

int b(20);   // 声明变量b,初始化值为20。

  • 把值写在花括号中,等于号也可以省略(C++11标准),统一初始化列表。

int a={15};  // 声明变量a,初始化值为15。

int b{20};   // 声明变量b,初始化值为20。

注意:在Linux平台下,编译需要加-std=c++11参数。

7.5 关系运算符

关系运算

用于比较两个表达式的值,运算的结果为1-true和0-false。

关系

数学的表示

C++的表示

等于

=

==

不等于

!=

小于

<

<

小于等于

<=

大于

>

>

大于等于

>=

注意:

  1. 关系运算符的两边可以是数值,也可以是表达式;
  2. 用std::cout输出关系运算表达式时,关系表达式要加括号;
  3. 关系运算也适用于字符串(string),字符串常用的关系运算是==和!=,其它的基本上不用。

示例

#include <iostream>         // 包含头文件。

using namespace std;        // 指定缺省的命名空间。

// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
    int a = 7;
    int b = 7;
    bool result;

    result = a <= b - 3;            // a和b先做比较(关系)运算,然后再赋值给result。

    cout << "result=" << result << endl;    // 关系运算表达式需要括号,算术运算表达式可以不用括号。

    string str1 = "西施";
    string str2 = "西瓜";
    cout << (str1 == str2) << endl;
}

7.6 逻辑运算符

逻辑运算

根据给定的逻辑因子(表达式或值)返回一个新的逻辑因子。

运算符

术语

示例

结果

&&

逻辑与

a&&b;

如果a和b都为真,则结果为真,否则为假。

||

逻辑或

a||b;

如果a和b中有一个为真,则结果为真,二者都为假时,结果为假。

!

逻辑非(反)

!a;

如果a为假,则!a为真; 如果a为真,则!a为假。

注意:

  1. 逻辑运算符的两边可以是数值,也可以是表达式;
  2. 用std::cout输出逻辑运算表达式时,逻辑表达式要加括号;
  3. 在实际开发中,逻辑运算的多重组合是重点。

示例

#include <iostream>         // 包含头文件。

using namespace std;        // 指定缺省的命名空间。

// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
    bool a = false;
    bool b = true;
    // bool c = a && b;   // 如果a和b都为真,则结果为真,否则为假。
    // bool c = a || b;   // 如果a和b中有一个为真,则结果为真,二者都为假时,结果为假。
    bool c = !a;          // 如果a为假,则!a为真; 如果a为真,则!a为假。

    // cout << "c=" << c << endl;
    // cout << "a&&b=" << (a && b) << endl;
    // cout << "a||b=" << (a || b) << endl;
    cout << "!a=" << c << endl;
}

7.7 运算的优先级

一个表达式可以包含多个运算符,运算符的优先级决定了表达式各部分的执行顺序。

例如,按照运算规则, *的优先级比+高,所以的b * c将先执行:

a + b * c;

如果想让a + b先执行,则必须使用括号:

(a + b) * c;

如果一个表达式中操作符的优先级相同,那么它们的结合律(associativity)决定了它们的执行顺序(从左到右或从右到左)。例如,算术运算的组合方式是从左到右,赋值运算则是从右到左。如下:

表达式

结合律

组合方式

a/b%c

从左到右

(a/b)%c

a=b=c

从右到左

a=(b=c)

下表是全部运算符的优先级和结合律:

优先级

运算符

名称或含义

使用形式

结合方向

1

[]

下标

地址[表达式]

左到右

()

圆括号

(表达式)/函数名(形参表)

.

成员选择(对象)

对象.成员名

->

成员选择(指针)

对象指针->成员名

2

-

负号运算符

-表达式

右到左

(类型)

强制类型转换

(数据类型)表达式

++

前置自增运算符

++变量名

++

后置自增运算符

变量名++

--

前置自减运算符

--变量名

--

后置自减运算符

变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

~

按位取反运算符

~表达式

sizeof

长度运算符

sizeof(表达式)

3

/

表达式/表达式

左到右

*

表达式*表达式

%

余数(取模)

整型表达式/整型表达式

4

+

表达式+表达式

左到右

-

表达式-表达式

5

<<

左移

变量

左到右

>>

右移

变量>>表达式

6

>

大于

表达式>表达式

左到右

>=

大于等于

表达式>=表达式

<

小于

表达式

<=

小于等于

表达式

7

==

等于

表达式==表达式

左到右

!=

不等于

表达式!= 表达式

8

&

按位与

表达式&表达式

左到右

9

^

按位异或

表达式^表达式

左到右

10

|

按位或

表达式|表达式

左到右

11

&&

逻辑与

表达式&&表达式

左到右

12

||

逻辑或

表达式||表达式

左到右

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

14

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

变量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

<<=

左移后赋值

变量

>>=

右移后赋值

变量>>=表达式

&=

按位与后赋值

变量&=表达式

^=

按位异或后赋值

变量^=表达式

|=

按位或后赋值

变量|=表达式

15

,

逗号运算符

表达式,表达式,…

左到右

注意:

  1. 如果不确定运算符的优先级,可以加括号;
  2. 多用括号,让代码的可读性更好。

标签:变量,int,笔记,运算符,C++,main,表达式,赋值
From: https://blog.csdn.net/qq_38196449/article/details/143695374

相关文章

  • Spring学习笔记_33——事务隔离级别和事务传播
    事务隔离级别和事务传播机制事务隔离级别事务隔离级别是数据库管理系统在处理多个事务时,用来隔离并发事务以防止数据不一致性的机制。不同的隔离级别提供了不同的保护级别,以防止脏读、不可重复读和幻读等并发问题。以下是SQL标准中定义的四种隔离级别,以及一个额外的ISOLAT......
  • 代码静态测试工具Klocwork 2024.3新版发布:Validate平台改进编码标准CC++
    Klocwork2024.3为C/C++分析引擎和构建上传流程引入了新功能和性能改进。此版本还附带了增强的安全性和用户体验改进,包括用于SAML/OIDC身份验证的IDE插件中更好的用户身份验证工作流程。其他增强功能包括更广泛的编码标准覆盖范围以及改进的与Bazel构建系统的集成。Vali......
  • 做题笔记(三)
    CF280D-k-MaximumSubsequenceSum\(\text{diff:}2800\)经典问题:求解区间\(k\)个不交子段的和的最大值。对于没有修改的版本,我们采用P6821[PA2012]Tanielinie的做法,首先将原序列连续的正(负)数缩成一个数,然后用加入正数,不断减少连续段(加入负数和删除正数),用堆维护即可......
  • C++ 中环境变量获取,动态库环境变量的传递
    C++中环境变量获取,动态库环境变量的传递在实践中,考虑最好还是使用getenv()函数来取得相关的环境变量.C/C++获取系统环境变量,其实是很简单的.函数名:getenv功能:从环境中取字符串,获取环境变量的值头文件:stdlib.h用法:char*getenv(char*envvar);getenv()用来取......
  • 做题笔记(四)
    CF1773H-HotandCold\(\text{diff:}2600\)询问\((x,y)\)和\((x+1,y)\)和\((x+1,y+1)\)即可将\(x,y\)坐标的范围减半,然后可以在\(3\log_210^6=60\)次询问左右解决这个问题。CF725F-FamilyPhotos\(\text{diff:}2900\)发现有些东西\(A,B\)都不......
  • Mit6.S081笔记Lab7: Multithreading 多线程
    课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/thread.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/threadxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相......
  • 《Django 5 By Example》阅读笔记:p17-p53
    《Django5ByExample》学习第2天,p17-p53总结,总计37页。一、技术总结1.数据库迁移pythonmanage.pymakemigrationsblogpythonmanage.pysqlmigrateblog0001pythonmanage.pymigrate2.ORMDjango自带ORM。3.view(1)定义p42,ADjangoviewisjustaPythonfuncti......
  • 南沙C++信奥赛老师解一本通题 1385:团伙(group)
    ​【题目描述】在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多......
  • C 语言运算符
    目录1.算术运算符2.自增运算符,自减运算符3.关系运算符4.逻辑运算符 5.位运算符6.逗号运算符7.运算优先级1.算术运算符算术运算符专门用于算术运算,主要有下面几种。+:正值运算符(一元运算符)-:负值运算符(一元运算符)+:加法运算符(二元运算符)-:减法运算符(二元运算符)*:乘法运算......
  • C++求最小公倍数与最大公因数
    #大一小卡了咪的作业4题目:        设计两个函数MaxCommonDevisor(n,m) 和MinCommonMultiple(n,m),分别求两个数的最大公约数和最小公倍数。主函数调用上述两个函数,实现功能。    乍一看这个题其实比较麻烦,因为要同时满足两个数的要求(同时整除/分别整除),但实际......