C++ Primer Plus 第5章

循环和关系表达式

for (i = 1; i < 5; i++)   // 控制语句
{
} // 循环体
i = 1 // 循环初始化
i < 5 // 循环检测,c++将其强制转换为bool类型
i++  循环更新

语法规范: for和括号之间有一个空格

表达式:所有表达式都是有值的。a=1是赋值表达式。

表达式+; = 语句,反过来不成立。

bool值得输出:cout << ture;输出是1,如果输出为true和false需要加控制符。

cout.setf(ios_base::boolalpha);

c++给for循环添加了一个功能:允许使用初始化语句。

for (int i = 1; i < 6; i++)

使用const 定义数组中元素的个数。

递增运算符和递减运算符:++ --(前后缀针对同一变量,不要出现在一个表达式中)

// 避免  b = a++  + a++;这类表达式
// 原因是c++只保证在顺序点之前两个递增运算符结束,但是不保证在哪个位置执行。

前缀和后缀的区别:

  • 先计算表达式,还是先修改变量。(核心要清楚表达式的概念)
  • 前缀比后缀的效率更高

副作用:在计算表达式的时候对内存中的变量进行修改。

顺序点:程序执行过程当中的一个点。

递增运算符的优先级高于*解除引用(间接值运算符)

组合运算符:+=

复合语句(代码块):将多个语句当成一个语句使用

  • 在复合语句中定义变量,当复合语句结束时,则变量被释放。

逗号运算符:

  • 将多个表达式组合成一个表达式
  • 运算顺序是从左到右
  • 运算结果是最后一个表达式
  • 优先级最低

关系运算符:>,<,=,>=,<=,==

注意区分=赋值运算符和==等于运算符

C风格字符串比较:strcmp(地址1,地址2);如果两个字符串相同,则返回0,如果第一个大于第二个则正数,反之,则是负数。比较的大小按系统的排列顺序决定,即按照数值编码的大小进行排列。

string字符串比较

string a = "abs";
string b = "a32v";
a == b;
a == "hello";
// string使用了符号重载,因此可以直接使用。只要表达式中有一个string就可以使用

空字符编码为0.

for 和 while循环的区别:

  • for省略判断则为true
  • for可以声明变量
  • forcontinue还会执行更新语句。

写循环要默念的事情:

  • 初始化
  • 更新判断的变量
  • 设置测试条件

让程序停一下:ctime

#include<ctime>  // 头文件,包含
clock_t 是类型 // 是一个类型别名
CLOCKS_PER_SEC // 由于其使用的是系统时间,而不是真实的时间
clock()  // 当前的系统时间

类型别名:一个类型的另外一种表示方法。

// 第一种利用预处理编译指令
// 其使用就是讲char原封不动的反倒BYTE处
#define BYTE char;
#define BYTE char*;
BYTE ps,pa;  //  此处ps是指针,而pa是变量
// typedef 不会这样

// 第二种利用typedef,真正的类型别名
typedef char BYTE;

基于数组的for循环,c++11:

double ps[3] {1,2,3};
for (double x : ps)

// 如果要实现对数组中数据的操作
for (double &x : ps)   // 引用变量

 读入操作:cin.get()函数重载操作

cin.get();   // 返回输入中的下一个字符
cin.get(ch); // 返回一个cin对象
cin.get(ch,arsize);

cin操作当遇到需要bool类型的时候,将自动转换成bool类型,如果上一次读取成功,则是true.反之则是false。

读入停止的方法

  • 哨兵符号
  • EOF文件结尾:
    • 利用键盘模拟EOF
    • 重定向到文件

判断EOF的方法

cin.eof();   // 读到EOF,则为true
cin.fail();   // eof或者fail的标志位位true则返回true
// 此时将无法继续读入,需要使用cin.clear()

c++中满足c语言的要求:cout.put()  cin.get()

cin.get()  // 返回字符, 在进行判断时,判断返回的是否是EOF。因为EOF不是任何char,所以使用int接收。然后进行判断

cout.put() 有三种原型 当使用int输入时,无法判断使用哪一个所以需要转换。

cout.put(char)
cout.put(unsigned char)
cout.put(signed char)

赋值运算符优先级低于关系运算符优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值