C++基础语法学习(三):循环

笔者需要参与一项slam项目的开发,经年不用C++知识已经统统上交给了国家,尤其是现在用python炼丹调参不亦乐乎,怕是一时都改不过来习惯。
故决定速刷C++primer(六)一书,把忘掉的东西捡起来,希望不要和python搞混。
(只是熟悉语法的话看菜鸟教程查表更快,但是为了摸鱼汇报进度还是过一下书吧)

循环

一看到循环就想到迭代,就想到时间复杂度,就想到数据结构。。。。。。。。


前缀与后缀

以递增运算符(++)为例:

int x = 5;
y = x++;//y=5,x=6
z = ++x;//z=6,x=6

前缀格式++x首先对x进行递增操作,然后将它赋值给其他变量;而后缀格式x++则是先把x赋值给其他变量,然后再进行递增操作。显然,当它不是表达式(即不赋值给其他变量)时,前缀与后缀在运算结果上没有差别(比如for循环里)。

  • 对于用户自定义类,前缀效率更高
  • 前/后缀与指针解除优先级相同,从右至左运算;后缀比前缀优先级高。

举个例子:

double x[5]{1.2,2.3,3.4,4.5,5.6};
double* pointer = x;
double y1 = *++pointer;
double y2 = ++*pointer;
double y3 = *pointer++;
double y4 = (*pointer)++; 
  1. 这里pointer指向数组x第一个元素的内存地址,*++pointer表示先对指针进行递增加一,指向第二个元素地址,然后指针解除取数,所以y1 = 2.3
  2. ++*pointer表示先取指针指向的数(第二个元素)(第一步已经改变了指针指向的地址),再对数进行递增,所以y2 = 3.3
  3. *pointer++表示先对指针进行递增再解除指针,但是后缀会先给表达式赋值然后才执行递增操作,所以这里解除的指针还没有递增,y3 = 3.3
  4. (*pointer)++表示对解除指针后的值进行递增操作,由于上一步指针进行了递增,所以此时指针指向了第三个元素,赋值给y4后才进行递增,所以y4 = 3.4

关系表达式

操作符含义
<小于
<=小于等于
==等于
!=不等于
>大于

注意赋值与关系判断里等于的区别

String比较

对于C风格字符串,使用strcmp函数,但是用string类会更简单,可以直接string xxxxxx != "sdksl"操作。

For循环

一个典型结构即:

for (初始值;测试表达式;更新循环测试的值)
{
	do something...
}
for (int i=0;i<5;i++){
	cout<< "hello world";
}
  • 设定初始值–>>判断是否应该循环–>>执行循环体内操作–>>更新循环值–>>…–>>…
  • 测试表达式最终会转换为bool类型,所以可以设定判断为0终止循环亦可。
  • 可以在括号里声明初始值,但是只在for循环里有效哦。
  • 循环变量更新可用逗号运算符,使得变量更新支持两组运算操作。

While循环

string name = "Angelbaby";
int i = 0;
while (name[i] != '\0')     // process to end of string
{
   cout << name[i] << ": " << int(name[i]) << endl;
   i++;
}

while循环和for循环几乎等效,一般使用for循环。

do while 循环

do
	body
while(test-expression);

出口条件的循环适用范围比较小,作为了解。

文本输入

char ch;
int count = 0;
cin.get(ch);        // attempt to read a char
while (cin.fail() == false)  // test for EOF
{
    cout << ch;     // echo character
    ++count;
    cin.get(ch);    // attempt to read another char
}
cout << endl << count << " characters read\n";

cin.fail()检测是否输入到句尾,cin.get(ch)获取输入字符,可输入空格等特殊符号。

tips

需要循环输入数字时,循环条件可以while (cin>>val1>>val2)类型转换判断bool嘛。

二维数组

初始化

实例:大括号

int array1[2][4] = {
{2,4,7,1},{3,2,6,4}
};

使用

通过array1[i][j]索引即可使用。


相关练习均已上传github。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++是一种通用的编程语言,它支持面向对象的编程风格,并且具有强大的系统编程能力。下面是C++的一些基础语法: 1. 注释:在C++中,注释可以用来解释代码,以便于其他人阅读和理解。单行注释使用双斜线(//),多行注释使用斜线和星号(/* ... */)。 2. 标识符:标识符是变量、函数、类等的名称。标识符由字母、数字和下划线组成,并且以字母或下划线开头。 3. 变量:在C++中,需要声明变量来存储数据。变量的声明包括类型和名称。例如,int表示整数类型,而float表示浮点数类型。 4. 数据类型:C++提供了多种数据类型,包括整型(int、short、long)、浮点型(float、double)、字符型(char)、布尔型(bool)等。 5. 运算符:C++支持各种运算符,例如算术运算符(+、-、*、/)、关系运算符(==、!=、<、>)、逻辑运算符(&&、||、!)等。 6. 控制流语句:C++提供了多种控制流语句,例如条件语句(if-else)、循环语句(for、while、do-while)、跳转语句(break、continue、return)等。 7. 函数:函数是可重用的代码块,用于执行特定的任务。函数由函数头和函数体组成,函数头包括返回类型、函数名和参数列表。 8. 类和对象:C++是面向对象的语言,支持类和对象的概念。类是一种用户定义的数据类型,用于封装数据和方法。对象是类的实例,可以通过调用对象的方法来操作数据。 这只是C++语言的一些基础语法,还有很多其他的概念和特性。如果你对某个特定的主题有更深入的兴趣,我可以为你提供更详细的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值