2、C++简单程序设计:工具、数据类型与运算符

C++简单编程

  • C++编程工具
    • 程序开发基本概念
    • 程序工具VS
      • 界面简介
      • 项目创建
      • 项目调试
      • 帮助文档
  • C++数据类型
    • C++程序基本结构
    • C++符号
      • 关键字
      • 标识符
      • 文字
      • 运算符
      • 分隔符
      • 空白
    • C++数据类型
      • 基本数据类型
      • 常量
      • 变量
      • 符号常量
  • C++运算符与表达式
    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 位运算符
    • 赋值运算符
    • 杂项运算符
    • C++ 中的运算符优先级

C++编程工具

程序开发基本概念

  1. 源程序
    源程序就是我们用各种语言写的程序,我们常说写代码其实就是在写源程序。源程序可以是汇编语言或者高级语言等其他语言所写。
  2. 目标程序
    目标程序是经过翻译之后生成的程序,可以是机器语言表示的,也可以是汇编语言或其他中间语言表示的。我们写程序编译之后的obj文件就是目标程序。目标程序理论说应该能运行,但是程序运行离不开操作系统的支持,它必须经过装载和链接,生成可执行程序(exe文件)才能运行。
  3. 翻译程序
    翻译程序就是把源程序翻译成目标程序的程序。它有三种类型:汇编程序、编译程序和解释程序。
    汇编程序是把用汇编语言程序翻译成目标程序的程序。编译程序是把高级语言程序翻译成目标程序的程序,C++是高级语言,需要编译程序。解释程序也是将高级语言翻译成目标程序,但它是输入一句,翻译一句,执行一句,直到整个源程序被翻译执行完毕,效率比较低。

程序工具VS

VS
若要使用MFC,则需要在安装时在“单个组件”选项中,找到并勾选适用于最新的v142生成工具的C++ MFC (x86和x64)。

界面简介

  1. 菜单栏:我们常用的是File,View和Debug菜单下的菜单项。工具栏各项其实在菜单栏都有与它们对应的菜单项,功能是一样的。
  2. 左侧面板可以放多个视图,我这里放了解决方案浏览器、类视图、资源视图和Git,解决方案浏览器中我们可以看到所有头文件和源文件构成的树,头文件就是.h后缀的文件,源文件就是.cpp后缀的文件,类视图中显示了每个工程的每个类,也是树状结构,在解决方案浏览器或类视图中双击每一项,中间区域都会打开相应的文件或者到类的位置。资源视图中显示了界面工程中使用的一些界面资源。
  3. 中间区域默认是打开start page,打开一个工程后我们在左侧面板上双击某项时,中间区域会出现相应的界面。
  4. 右侧面板上有个Toolbox,是在界面工程中用来往界面资源模板上添加控件的,里面包含了各种控件,直接拖到模板上就行了。底侧还有几个标签,其中一个是output,这是输出视图,用来输出程序运行信息和我们程序中写的一些调试信息,还有一个Find Result视图,用来显示我们搜索任何字母或单词的结果。

项目创建

File->New->Project项可以创建一个工程,也可以在start page中点击New Project…,然后出现的New Project窗口中有多个工程类型可以选择。

  • Win32 Console Application是Win32控制台程序:一个没有应用程序界面的只有Dos命令行界面的工程,它的入口是main函数
  • MFC Application是MFC应用程序,可以建立以开发界面程序
  • Win32 Project是Win32程序:Win32 Project的入口是WinMain函数(代表不同编译环境)
  • Empty Project是空程序
  • MFC DLL用来建立生成动态链接库的工程

一个解决方案中可以包含多个工程,你可以把它理解为多个有关系或者没关系的工程的集合,有时把多个工程放到一个解决方案里调试起来很方便。
工具栏上有个下拉列表框,它包含有Debug、Release和Configuration Manager,选择Debug时为调试模式,生成的可执行程序中包含调试信息,我们可以调试并清楚的看到变量值,选择Release时生成的可执行程序中不含调试信息,在设置断点后看到的变量值可能不准确。

项目调试

  • Debug->Start Debugging(快捷键是F5)用来开始调试
  • Debug->Toggle Breadpoint(快捷键是F9)用来设置断点,设置断点后然后开始调试,程序运行到断点时会停下来,我们用鼠标放到断点处的各个变量上时可以看到当时这些变量的值
  • Debug->Start Without Debugging(快捷键是ctrl+F5)表示不调试直接运行,也就是到断点处也不会停止运行
  • Debug->Step Into(快捷键是F11)用来单步执行,遇到子函数就进入并且继续单步执行
  • Debug->Step Over(快捷键是F10)也是单步执行,但在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完而跳到下一步,也就是把子函数整个作为一步。

帮助文档

帮助菜单下“技术支持”(快捷键是F1)

C++数据类型

C++是从C中发展来的,可以兼容C。所以C++的一些基本语法跟C几乎是一样的。

C++程序基本结构

#include  <iostream.h>
void main(void){cout << "Hello world! \n";
}
  1. 头文件
    #include叫做编译指令,用来包含一些文件。这里包含的iostream.h是C++标准库里的文件,大家可以直接用,它声明了输入输出的有关信息。这类文件常放在程序开始的地方,所以叫做头文件。
  2. 函数体
    main是主函数名,函数体用一对大括号括住。函数是C++程序里最小的功能单位。C++程序里必须有且只能有一个main函数,它是程序执行的入口,就是从它开始执行。main函数前的void表示此函数没有返回值,后面的void表示没有参数。cout<<“Hello! \n”;是条语句,每条语句由分号结束。cout是C++标准库里预定义的对象,它的信息就放在之前包含的头文件iostream.h中,它是一个输出流对象,用操作符<<将后面的字符串输出到标准输出设备,一般是显示器。

C++符号

C++语言的字符集由下述字符构成:

  1. 英文字母:A-Z,a-z;
  2. 数字字符:0~9;
  3. 特殊字符:空格 ! # % ^ & * _ + = - ~ < > / \ ’ " ; . , () [] {}

关键字

关键字是C++预定义的一些单词,我们定义变量常量时是不能使用的。
auto bool break case catch char class const const_case continue default delete do double dynamic_cast else enum explicit extern false float for friend goto if inline int long mutable namespace new operate private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile while

标识符

标识符是我们软件开发者自己声明的单词,用来命名一些实体,比如:函数名、变量名、类名、对象名等。它的构成规则:

  1. 以大写字母、小写字母或下划线开头;
  2. 可由大写字母、小写字母、下划线或数字组成;
  3. 字母区分大小写,大写字母和小写字母表示不同的标识符;
  4. 不能用C++关键字。

文字

指在程序中用符号表示的数据,包括数字、字符、字符串和布尔文字(true和false)。

运算符

用来进行运算的符号,比如:+,-,*,/

分隔符

起分隔作用,用来分隔词法记号或程序正文,分隔符有:() {} , : ; 。 这些分隔符不进行实际的操作,只是用来构造程序

空白

编译分析代码的时候会将代码分成词法记号和空白,空白包括空格、制表符(TAB键产生的字符)、换行符(回车键产生的字符)和注释。

  • 空白用来表示词法记号的开始和结束位置,其余的空格将被编译器忽略。比如int i;跟int i;是等价的。
  • 注释是对代码进行必要的注解和说明,编译时不会理会注释部分,C++语言有两种注释方法:
    1. 使用“/”和“*/”括起注释文字,例如,/this is a comment/;
    2.使用“//”,从“//”开始直到它所在行的行尾,所有的字符都被作为注释处理,比如,// this is a comment。

C++数据类型

基本数据类型

C++的基本数据类型有bool(布尔型)、char(字符型)、int(整型)、float(浮点型,表示实数)、double(双精度浮点型)。除了bool型外,有两大类:整数和浮点数。因为char型本质上就是整型,只不过是一个字节的整数,用来存放字符的ASCII码。还有几个关键字signed和unsigned、short和long起修饰作用。

  • short修饰int时,short int表示短整型,占2个字节,这里int可以省略,也就是说short就是short int。long可以修饰int和double,long int表示长整型,占4个字节,同样int也可以省略。int在不同的编译环境中可能占的字节数不一样,大多数环境中占用4个字节。short类型固定占2个字节,long类型固定占4个字节。

  • signed和unsigned可以用来修饰char型、int型、short型和long型。signed表示有符号数,unsigned表示无符号数。有符号数以二进制补码形式存储,最高位为符号位,“0”表示正,“1”表示负。无符号整数只能是正数。char型、int型、short型和long型默认情况也就是不加修饰的情况下是有符号(signed)的。

  • bool型数据取值只能是false(假)或true(真)。它所占的字节数在不同的编译系统中可能也不一样,但大多数是占1个字节。

常量

所谓常量就是在程序运行过程中始终不会变的量,就是直接用文字表示的值,例如,1,23,true,‘B’都是常量。常量又分整型常量、实型常量、字符常量、字符串常量和布尔常量。

  • 整型常量包括正整数、负整数和零。整型常量的形式有十进制、八进制和十六进制。十进制我们都知道了,八进制常量的数字必须以数字0开头,比如0324,-0123。十六进制整型常量的数字必须以0x开头,比如0x3af。
  • 实型常量就是数学上的小数,有两种表示形式:一般形式和指数形式。一般形式比如:13.7,-22.5。指数形式比如:0.2E+2表示0.2*10^2。
  • 字符常量是单引号括起来的一个字符,比如:‘b’,‘?’。还有一些不可显示字符,例如响铃、换行、制表符等等,C++提供了一种转义序列的表示法来表示这些字符。比如:\a表示响铃,\n表示换行,\t表示水平制表符,\b表示退格,\r表示回车,\表示字符’',"表示双引号,'表示单引号。ASCII字符常量占用1个字节。
  • 字符串常量是用双引号括起来的字符序列,比如:“China”。字符串常量会在字符序列末尾添加’\0’作为结尾标记。
  • 布尔常量只有两个:false(假)和true(真)。

变量

变量与常量一样也有自己的类型,在使用之前必须首先声明它的类型和名称。变量名也是标识符,因此命名规则应遵从标识符的命名规则。同一个语句中可以声明同一个类型的多个变量.
变量声明语句的形式:

数据类型   变量名1,变量名2,...,变量名n;

赋初值右两种形式:

int  num=3;
int  num(3);

符号常量

我们除了可以用文字表示常量以外,还可以给常量起个名字,这就是符号常量。这个符号常量就代表了那个常量。
符号常量在使用之前必须声明,跟变量相似。符号常量声明形式:

const  数据类型说明符  常量名=常量值;  
数据类型说明符  const  常量名=常量值;
const  float pi=3.1415926;

note:符号常量声明时必须赋初值,在其他时候不能改变它的值

使用符号常量与文字常量相比有很多好处:程序的可读性更高,我们看到这个名字就能看出它的具体意思,再就是最重要的,如果我们多个地方都用了上面那个pi常量,但后来圆周率的值精度我想改一下,只用3.14,这个时候怎么把所有的pi都换掉呢?我们只需要修改pi的声明就行了:const float pi=3.14;,但是如果使用文字常量即所有用圆周率的地方直接写的3.1415926,那么就必须全找到再换掉,这样不但麻烦而且容易漏掉。

C++运算符与表达式

算术运算符

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

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

关系运算符

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

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

逻辑运算符

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

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

位运算符

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

pqp&qp1qp^q
00000
01011
11110
10011

可用于二进制计算。

赋值运算符

运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数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
1=按位或且赋值运算符C 1= 2 等同于 C = C

杂项运算符

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

C++ 中的运算符优先级

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/844679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Linux基本指令2

我们接着上一篇&#xff1a;http://t.csdnimg.cn/bSJx8 我们接着完善ls指令 我们可以直接匹配对应格式的文件匹配出来 1.man指令&#xff08;重要&#xff09;&#xff1a; Linux的命令有很多参数&#xff0c;我们不可能全记住&#xff0c;我们可以通过查看联机手册获取帮助…

java版CRM客户关系管理系统源码-CRM客户关系管理系统的技术架构与功能实现

CRM客户关系管理系统的技术架构与功能实现 一、引言 随着市场竞争的日益激烈&#xff0c;客户关系管理&#xff08;CRM&#xff09;已成为企业赢得市场、提升客户满意度、促 进业务增长的关键手段。本文旨在介绍一款先进的CRM客户关系管理系统的技术架构与功能实现&#xff0…

leetCode-hot100-数组专题之子数组+二维数组

数组专题之子数组二维数组 子数组238.除自身以外数组的乘积560.和为K的子数组 二维数组48.旋转图像 子数组 数组的子数组问题是算法中常见的一类问题&#xff0c;通常涉及到数组的连续元素。在解决这类问题时&#xff0c;常用的方法有前缀和、滑动窗口、双指针&#xff0c;分治…

了解VS安全编译选项GS

缓冲区溢出攻击的基本原理就是溢出时覆盖了函数返回地址&#xff0c;之后就会去执行攻击者自己的函数&#xff1b; 针对缓冲区溢出时覆盖函数返回地址这一特征&#xff0c;微软在编译程序时使用了安全编译选项-GS&#xff1b; 目前版本的Visual Studio中默认启用了这个编译选项…

IAR9.30安装和注册相关

下载解压licpatcher64工具&#xff0c;把licpatcher64.exe拷贝到IAR的安装目录中双击运行。 示例IAR9.30.1默认安装如下如下&#xff0c;一共三个分别拷贝运行&#xff0c;不要遗漏。 C:\Program Files\IAR Systems\Embedded Workbench 9.1\arm\bin C:\Program Files\IAR Syst…

结构体(自定义类型)

1.结构体 结构体这种自定义的数据类型&#xff0c;让程序员可以自己创造适合的类型 结构是一些值的集合&#xff0c;这些值称为成员变量&#xff0c;结构的每个成员可以是不同类型的变量&#xff0c;可以是标量&#xff0c;数组&#xff0c;指针甚至是其他结构体 1.1.1 结构…

2024最新 Jenkins + Docker实战教程(七)- Jenkins实现远程传输和自动部署

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

2024 五月份国内外CTF 散装re 部分wp

cr3CTF warmup 附件拖入ida main函数无法反汇编&#xff0c;仔细看&#xff0c;有花指令&#xff0c;jnz实际上必定跳转。有非常多处&#xff0c;可以写脚本patch程序去掉花指令&#xff0c;只要匹配指令&#xff0c;再获取跳转地址&#xff0c;nop掉中间的代码就行。但…

5.29_Java程序流程控制

CSDN 同C语言的流程同 1、补充&#xff1a; 1、switch使用时的注意事项 1、表达式只能是byte、short、int、char&#xff0c;JDK5开始支持枚举&#xff0c;JDK7开始支持String、不支持double、float、long switch里面是做分支匹配&#xff0c;也就是可以出现很多分支&am…

oracle12.1 rac 静默dbca教程(百分之百创建成功)

修改原响应文件 [oracleprimary1 database]$ cd response/ [oracleprimary1 response]$ ls dbca.rsp db_install.rsp netca.rsp [oracleprimary1 response]$ vi dbca.rsp 默认即可 数据库类型内存占比按需选择 运行静默创建实例脚本 [oracleprimary1 response]$ dbca -silen…

【传知代码】知识图谱推理-论文复现

文章目录 概述方法介绍核心逻辑实验条件数据集实验步骤实验结果 核心代码小结 本文涉及的源码可从知识图谱推理该文章下方附件获取 概述 本研究深入探讨了基于图神经网络&#xff08;GNN&#xff09;的知识图谱推理&#xff0c;特别聚焦于传播路径的优化与应用。在智能问答、推…

⌈ 传知代码 ⌋ YOLOv9最新最全代码复现

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

数据结构——二叉树的实现

文章目录 一、二叉树概念的回顾二、二叉树结构的定义三、二叉树的创建方法一、写个创建结点的函数然后手动链接起来创建结点的函数手动链接 方法二、通过前序遍历的数组的方式构建二叉树创建的函数声明创建函数的定义 四、 二叉树的遍历前序遍历中序遍历后序遍历层序遍历 五、二…

从零开始利用MATLAB进行FPGA设计(六)用ADC采集信号教程1

黑金的教程做的实在太拉闸了&#xff0c;于是自己摸索信号采集模块的使用方法。 ADC模块&#xff1a;AN9238 FPGA开发板&#xff1a;AX7020&#xff1b;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I&#xff0c;400引脚 FBGA 封装。 往期回顾&#xff1a; 从零开始利…

测试驱动编程(4)模拟消除依赖

文章目录 测试驱动编程(4)模拟消除依赖模拟框架Mockito什么要模拟名词解释Mockito常用注解Mockito常用静态方法Mockito测试流程三部曲基础用法可变返回结果验证verfily对象监视spy 示例实战升级版井字游戏需求一需求二需求三 总结 测试驱动编程(4)模拟消除依赖 模拟框架Mockit…

YOLOv8架构详解

&#x1f4cc;YOLOv8架构详解 YOLOv8 架构图YOLOv8 Backbone部分YOLOv8 Head部分Neck和Head结构 在视觉深度学习中&#xff0c;通常将模型分为 2~3 个组成部分&#xff1a;backbone、neck&#xff08;可选&#xff09; 和 head。 Backbone&#xff08;主干网络&#xff09;负责…

NTLite深度Windows系统镜像文件修改定制

计算机爱好者和技术宅的圈子里,NTLite是一个广受欢迎的名字,一款强大的Windows系统定制工具,允许用户对Windows安装镜像进行深度修改,从而打造出一个更加个性化、高效且精简的操作系统。无论是为了优化系统性能、移除不必要的组件,还是集成最新的更新和驱动,NTLite都能成…

java后端框架-MyBatis

一、概述 1、起源 MyBatis本是Apache下的开源项目&#xff0c;名为iBatis,2010年转投谷歌,从iBatis3.x开始更名为MyBatis 2、优点 (1)优秀的数据持久层框架&#xff08;对jdbc做了轻量级封装&#xff09; 3、特点 (1)对jdbc中接口进行封装的同时还提供了一些自己的类实现…

samba_ubuntu_share_vmbox_vmware

_____ Ubuntu 利用 samba 与 win 直接共享文件夹 _____ samba Samba - 维基百科&#xff0c;自由的百科全书 (wikipedia.org) 用于 win 和 unix 直接访问资源 samba 为选定的 unix 目录建立网络共享&#xff0c; 使得 win 用户可以像访问普通 win 下的文件夹那样来通过网络来…

npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本

安装npm时出现如下提示&#xff1a; 出现这个错误信息&#xff0c;是系统禁止执行PowerShell的脚本。 出现的原因是&#xff0c;系统默认的执行策略是Restricted&#xff08;默认设置&#xff09;&#xff0c;限制执行&#xff0c;所以会出现如上提示。 解决方法&#xff1a;…