- C++程序设计基础(上)
- 周霭如 林伟健编著
- 745字
- 2020-08-28 09:48:04
2.3 判断表达式的使用
C++表达式的表现力相当丰富。程序中经常要根据一个表达式的值决定程序的流程控制。例如,表达式的值为真时执行某个语句,或执行循环体。这种表达式称为判断表达式。
C++逻辑类型本质是整型。逻辑运算的结果为true时,值等于1;为false时,值等于0。但所有的表达式,包括关系运算、逻辑运算、算术运算、赋值运算等表达式都可以作为判断表达式。算术表达式可以用做逻辑表达式,其值非 0 时,C++认为是逻辑真;只有表达式的值等于 0,才认为是逻辑假。
这种运算方式在某种程度上降低了程序的可读性。对于熟练的程序员,利用C++表达式的灵活性可以编写出高效简洁的代码。这里通过一些简单例子说明不同表达式用于条件判断的情况。程序设计的实际应用丰富多彩,需要读者在实践中体会。
1.算术表达式用于判断
算术表达式表达一个结果值,如果这个结果值可以用于0值或非0值判断,则可以直接用做判断表达式。
要表示: expression!=0
可以简化为: expression
要表示: expression==0
可以表示为: !expression
例如,输出1~100之间的奇数,程序如下:
for(int i=1; i<=100; i++) if(i%2) cout << i << '\t';
其中: if(i%2) …
相当于: if(i%2!= 0) …
如果要输出全部偶数,则if语句可以改写为:
if(!(i%2)) …
又如,判断整型变量a、b是否相等的程序如下:
if(a-b) cout<<a<<"!="<<b<<endl; else cout<<a<<"=="<<b<<endl;
其中: if(a-b) …
相当于: if(a-b != 0) …
再如: while(p && q!=k) …
相当于: while(p!=0 && q!=k) …
2.赋值表达式用于判断
赋值表达式的值是被赋值变量的值,用于判断表达式中,首先完成赋值运算,然后以被赋值变量的值作判断。
例如,以下程序把a-b的值存放在变量c中,如果a不等于b,则输出它们的差:
if(c=a-b) cout<<"the difference of"<<a<<"and"<<b<<"is:"<<c<<endl; else cout<<a<<"is equal to"<<b<<endl;
其中: if(c = a-b) …
相当于: c = a-b; if(c != 0) …
3.对输入进行判断
有时,不能预先确定输入数据量,程序运行时可以用组合键Ctrl+Z(同时按下Ctrl和Z键)结束cin输入。按组合键Ctrl+Z令cin的输入函数返回一个0值。
【例 2-25】统计输入整数的个数,并进行累加。直到按 Ctrl+Z 组合键结束输入,输出计算结果。
#include <iostream> using namespace std; int main() { int x,n=0,s=0; while(cin>>x) //判断表达式中输入数据,用函数返回结果作判断 { n++,s+=x; //注意,while语句的循环体是逗号表达式 } cout << "n = " << n << endl << "sum = " << s << endl; }
程序运行,输入数据并回车后按Ctrl+Z组合键,显示结果如下:
1 2 3 4 5 6 7 8 9 ^Z n = 9 sum = 45
值得注意的是,cin>>不但能够获取输入数据并送到指定变量中,它还具有一个逻辑返回值,能够在正常输入时返回1,不能得到输入值(文件结束)时返回0。有关cin的讨论,在第7章和第11章中还会涉及。
同样道理,凡是具有返回值的函数(包括标准函数和用户自定义函数)调用都可以放在判断表达式中。
【例2-26】输入一个英文句子,以“.”结束。统计句子中包含的字符个数。
#include <iostream> using namespace std; int main() { int n=0; char c; while((c=cin.get())!='.') //判断表达式中调用标准函数 n++; cout<< "n = "<< n << endl; }
运行程序,输入字符串,显示结果如下:
c++ language program. n = 20
程序中的cin.get()函数调用返回一个键盘输出字符,赋给变量c。赋值表达式用于while的条件判断,当c的值等于'.'时结束循环。