ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cpp-base

2022-08-13 10:03:41  阅读:181  来源: 互联网

标签:语句 -- 循环 cin while base cpp 表达式


目录

1.cin&cout

  1. cin对应输入流,用于获得输入/取数据;cout对应输出流,用于输出数据

  2. cin对应于>>,要从中取,数据的流向是流->变量。对应的>>叫做输入运算符。

  3. cout对应于<<,要向其中输入,数据的流向是流<-变量。对应的<<叫做输出运算符。

    考虑是>>还是<<时,将流作为左边的,固定的,被输入/输出的对象

  4. cin,coutiostream头文件中定义的对象,该文件中还定义了cerr,clog共四个ostream对象

  5. 使用istream(cin)对象作为条件时,

2.两种注释方式

//注释方法1,‘//’。用于单行注释

/*
注释方法2, 用于多行注释
*/

特别注意,两种注释方法不可以均不可以嵌套

3.读取不定量的数据

std::cin >> val作为循环条件,可以实现不定次数的输入

#include <iostream>
int main(){
    int val = 0, sum = 0;
    while (std::cin >> val){
        sum += val;
    }
    std::cout << sum << std::endl;
    return 0;
}
  1. 当后续输入的值类型与第一次输入值的类型一致时,std::cin >> val的值为1,会继续循环。
  2. 当后续输入的值类型与第一次输入值的类型一致时,std::cin >> val的值为0,会结束循环。
for (cin >> n; n != 0; cin>>n){}

上面的for语句也可以实现不定次数的输入,当输入0时停止。

4.常量

  1. const关键字定义的常量

    格式:const valType valName value

  2. #define定义的常量

    格式:#define valType value

    这种方法的常量会通过值的类型来自动确定它的类型,属于隐式

  3. bool类型的值与符号常量

    bool类型的值,即True/False可以看作cpp预定义的两个整形常量,其值分别为1、0。

5.浮点数的等于与不等

  1. 应该避免对浮点数进行==/!=的运算,如下例。

    double x = 3.0, y = 4.0;
    bool a = (y-x*(y/x)*y == 0.0);
    cout << a << endl;
    ##一些编译器中,a的值可能为0,即false。说明浮点数相减的值不为零。
    
  2. 对于浮点数的比较,应当采用绝对值只差很小来判断两个浮点数是否相等。

    double x = 3.0, y = 4.0;
    if (abs(x-y) < 1e-7)
        cout << "x == y" << endl;
    else 
        cout << "x != y" << endl;
    

6.位运算

  1. 取反~

    指将0变为1,将1变为0

  2. &

    1&1=1,其余为0

  3. |

    0|0=0,其余为1

  4. 异或^

    相异为1,其余为0。异或的一个性质:( x ^ a ) ^ a = x

  5. 左移操作<<

    • 左移规则:将符号左边的数转为二进制后,将该数整体左移,移动的位数为符号右边的数。
    • 移动方法:将二进制数整体向左移动,高位舍弃,低位补齐0
    • 有时左移1位相当于*2
  6. 右移操作>>

    • 右移规则:将符号左边的数转为二进制后,将该数整体右移,移动的位数为符号左边的数。
    • 移动方法:将二进制数整体向右移动,舍弃低位,而对于高位:
      • 对于有符号的数:高位补齐原最高位(符号位)
      • 对于无符号的数有符号的非负数:高位补0

7.表达式

graph LR 表达式 --> 常量表达式 & 左值表达式
  1. 常量表达式:在编译时能够确定其值的表达式
  2. 左值表达式:指能出现在赋值操作符=左边的表达式。这种表达式值的结果存放在固定的、可读取的内存中,而非临时的存储空间中。如:
    • ++x是一个左值表达式,该式子的值存在了x中
    • x++不是一个左值表达式,该式子的值为x+1,遇上一个例子不一样的是这个式子的值没有被存在变量x中,而是作为一个临时常量存在了临时存储空间中
  3. 用大括号{}括起来的表达式被视作一整个表达式

8.空语句

cpp中的空语句指的是:只包含语句结束的;,而不包含任何表达式的语句。

9.switch语句

switch (exp){
    case expVal1: .......; break;
    case expVal2: .......; break;
    default: ........;
}
  • 要检测的表达式/有值的变量放在括号中
  • case后跟要检测变量的值,且将要执行的语句放在冒号后
  • case中可以放多条语句,用;隔开,一般在语句末加break

10.循环语句

while语句

while (exp0) {exp1;exp2;...}

while语句的执行顺序如下图所示:

graph LR a(循环计算表达式0的值) --> |值为1|执行大括号内语句/while后的第一条语句 a(循环计算表达式0的值) --> |值为0|结束循环/继续向下执行while后的第二条语句

do-while语句

do {exp1,exp2,.....} while (exp0);		

do-while循环的执行流程如下所示:

graph TD a(exp1,exp2,....) --> b(判断exp0的值) b --> |exp0的值为0|c(结束do-while) b --> |exp0的值为1|a

for语句

for (expA; expB; expC) {exp1,exp2,.....}

for循环的执行流程如下图所示:

graph LR A(expA) -->B(expB) B(expB) -->|expB值为1|x(exp1,exp2,....) x(exp1,exp2,....) --> C(expC) C(expC) -->B(expB) B ---->|expB值为0|z(结束for循环)
  • expA|expB|expC:三个表达式可以均为空语句,但必须含有两个;
  • expA:用作赋值表达式,for开始时会无条件执行
  • expB:用于判断,值为1时循环执行循环体-expC;值为0时结束for语句
  • expC:用于迭代,即对迭代变量进行改变,为下次的循环做准备

11.无条件转移语句

无条件转移语句包括:goto,break,continuereturn

goto

labelName: doSth.....;
......
goto labelName;

goto用于转至标签处执行,标签是指用labelName:这种格式标识的内容。

特别注意

  1. goto在跳转时,不可以越过变量定义。即是说若想跨过的语句中含有变量的定义,则不能够使用goto语句。
  2. goto在跳转时,不可以跳出/跳入函数体。
  3. goto语句常用于跳出多重循环,因为break语句只能够跳出一重循环。

break

break的作用:跳出当前break所在的循环

continue

continue只能够用在循环语句中。具体来说,只能结合while,do-while,for这三种循环语句来使用。

  • 用于while时,continue将会跳过其后的语句,转至while的条件判断处
  • 用于do-while时,continue会跳至位于末尾的条件判断处
  • 用于for时,continue会跳至expC处,即循环末段迭代处,然后再送至expB条件判断处

标签:语句,--,循环,cin,while,base,cpp,表达式
来源: https://www.cnblogs.com/dysonxxxxx/p/16582077.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有