循环和关系表达式

1. p142

字符串数组中

word 是数组名

word == “mate”

数组名是数组的地址, 同样,用引号括起来的字符串常量也是其地址,因此上面的关系式判断的是否存储在相同的地址上。

2.p147

for跟while 差别  

for循环中省略了测试条件,将认为条件为true

for循环中,可使用初始化语句声明一个局部变量,但在while循环中不能这么做

continue语句 稍有不同。

在无法预先知道循环将执行的次数时,程序员常使用while循环。

3.p149

类型别名

一 使用于处理器   #define BYTE char

二 使用关键字 typedef 来创建别名   typedef char byte

在声明一系列变量时,不适合

#define FLOAT_POINTER float *
FLOAT_POINTER  pa,pb;

这样pa是个指针指向了float , 而pb只是个float

typedef 方法不会有这样的问题,它能够处理复杂的类型别名。

typedef 方法不会创建新类型,而只是为已有的类型建立一个新名称,

4.p152

基于范围的for循环

对数组(容器类,如vector 和  array)的每个元素执行相同操作

double prices[5] = {4.9913.445.23,74.09,32.11};
for(double x : prices)
    cout<<x<<std::endl;

符号&表明x是个引用变量  -----第八章  加了&可以改变数组的内容。

还可以基于范围的for循环和初始化列表  ---第十六章讨论各种模板容器类

forint x : {3,4,6,24,})
    cout<<x<<" ";
cout<<"\n";    

5.p153

循环与文本输入

cin将忽略空格和换行符,发送给cin的输入被缓冲。这意味着只有在用户按下回车键后,他输入的内容才会发送给程序。这就是在运行该程序时,可以在#后面输入字符的原因。按下回车键,整个字符序列将被发送给程序,但是程序在遇到#字符后将结束对输入的处理。

用  cin.get(ch) 进行替换之前的 cin>>ch

cin.get  逐个字符读取输入的程序需要检查每个字符,包括空格,制表符,换行符。

6.p155

文件扫尾条件 

cin.fail() == false   //test for EOF

!cin.fail()

更通用

while(cin.get(ch))
{
  ...  
}

 这样cin.get(char)只被调用一次,而不是两次:循环前一次,循环结束后一次。为判断循环测试条件,程序必须首先调用cin.get(ch).  如果成功,则将值放入ch中。然后获得函数调用的返回值,即cin。接下来,程序对cin,进行bool转换,如果输入成功,则结果为true,否则false。三条指导原则(确定结束条件,对条件进行初始化以及更新条件)全部被放在循环测试条件中。

7.p157

另一个版本的cin.get()

 

C   getchar()  putchar()   头文件 stdio.h or  cstido

cin.get(ch)  用于字符输入时函数的返回值  istream对象(执行bool转换为true)

                 到达EOF时函数的返回值       istream对象(执行bool转换false)

 

 p163复习题中8.   int x = (1,024)  是否有效,有效将执行什么工作。

然后   int y;

   y = 1,024;

有效,表达式1,1024 由两个表达式组成 ——1和024,用逗号运算符连接。值为右侧表达式的值。这是024,八进制为20,因此该声明将值20赋给X。第二条语句也是有效果,然而运算符优先级将导致被判定成这样

(y=1),024 ;

024或20 没有使用

posted @ 2012-11-30 12:57  不想当元帅的好兵。  阅读(236)  评论(0编辑  收藏  举报