如果没有条件语句(例如if语句),则程序每次都会以几乎完全相同的方式运行。If语句允许更改程序的流程,因此它们允许算法和更有趣的代码。
在讨论if语句的实际结构之前,让我们检查计算机术语中TRUE和FALSE的含义。真实的陈述是计算为非零数字的陈述。错误的语句计算结果为零。与关系运算符进行比较时,如果比较为真,则该运算符将返回1;如果比较为假,则该运算符将返回0。例如,检查0 == 2的计算结果为0。检查2 == 2的计算结果为1。如果这使您感到困惑,请尝试使用cout语句输出这些各种比较的结果(例如cout <<( 2 == 1);)
进行编程时,程序的目标通常要求将变量存储的一个值与另一个值进行比较,以确定一个值是较大,较小还是相等。
有许多操作员允许进行这些检查。
众所周知,以下是关系运算符以及示例:
> greater than 5 > 4 is TRUE
< less than 4 < 5 is TRUE
>= greater than or equal 4 >= 4 is TRUE
<= less than or equal 3 <= 4 is TRUE
== equal to 5 == 5 is TRUE
!= not equal to 5 != 4 is TRUE
您很可能以前已经看过这些符号,可能符号略有不同。它们不应构成理解的任何障碍。既然您已经了解了计算机术语中的TRUE和FALSE以及比较运算符,那么让我们看一下if语句的实际结构。
基本的If语句语法
if语句的结构如下:
if ( TRUE )
Execute the next statement
这是一个显示语法的简单示例:
if ( 5 < 10 )
cout<<"Five is now less than ten, that's a big surprise";
在这里,我们正在评估语句“比五个少五个”,以查看它是否正确。运气不错!如果需要,您可以编写自己的完整程序,包括iostream,并将其放在main函数中,然后运行以进行测试。
若要在评估结果为true的if语句后执行多个语句,请使用括号,就像我们对函数主体所做的一样。大括号内的任何内容都称为复合语句或块。
例如:
if ( TRUE ) {
Execute all statements inside the braces
}
我建议始终在if语句后加括号。如果执行此操作,则无需记住在要执行多个语句时将它们放入,并且可以使if语句的主体在视觉上更加清晰。
别的
有时,如果if语句中的条件评估为false,则最好执行一些代码,而不是在语句评估为true时执行的代码。“ else”语句有效地表明,如果if语句为FALSE,则执行其后的任何代码(无论是单行还是括号之间的代码)。
它看起来可能像这样:
if ( TRUE ) {
// Execute these statements if TRUE
}
else {
// Execute these statements if FALSE
}
否则
else的另一种用法是,当有多个条件语句可能全部评估为true时,而您只希望一个if语句的主体执行。您可以在if语句及其主体之后使用“ else if”语句;这样,如果第一个语句为true,则将忽略“ else if”,但是如果if语句为false,则它将检查else if语句的条件。如果if语句为true,则不会检查else语句。可以使用其他许多if语句来确保仅执行一个代码块。
if ( <condition> ) {
// Execute these statements if <condition> is TRUE
}
else if ( <another condition> ) {
// Execute these statements if <another condition> is TRUE and
// <condition> is FALSE
}
让我们看一个简单的程序,供您自己尝试。
#include <iostream>
using namespace std;
int main() // Most important part of the program!
{
int age; // Need a variable...
cout<<"Please input your age: "; // Asks for age
cin>> age; // The input is put in age
cin.ignore(); // Throw away enter
if ( age < 100 ) { // If the age is less than 100
cout<<"You are pretty young!\n"; // Just to show you it works...
}
else if ( age == 100 ) { // I use else just to show an example
cout<<"You are old\n"; // Just to show you it works...
}
else {
cout<<"You are really old\n"; // Executed if no other statement is
}
cin.get();
}
使用布尔运算符的更有趣的条件
布尔运算符使您可以创建更复杂的条件语句。例如,如果您希望检查变量是否同时大于5和小于10,则可以使用布尔值AND来确保var> 5和var <10都为真。在以下有关布尔运算符的讨论中,我将大写布尔运算符以区别于普通英语。等效功能的实际C ++运算符将在本教程中进一步介绍-C ++符号不是:OR,AND,NOT,尽管它们具有等效功能。
使用if语句时,您通常希望检查多个不同的条件。您必须了解布尔运算符OR,NOT和AND。布尔运算符的功能类似于比较运算符:如果运算为FALSE,则每个运算符返回0;如果运算为TRUE,则每个运算符返回1。
NOT:NOT运算符接受一个输入。如果该输入为TRUE,则返回FALSE,如果该输入为FALSE,则返回TRUE。例如,NOT(1)的计算结果为0,而NOT(0)的计算结果为1。NOT(除零以外的任何数字)的计算结果为0。在C和C ++中,NOT编写为!。在AND和OR之前先评估NOT。
AND:这是另一个重要的命令。如果两个输入均为TRUE(如果’this’和’that’为true),则AND返回TRUE。(1)AND(0)的值将为零,因为其中一个输入为假(两个值都必须为TRUE才能得出TRUE)。(1)AND(1)的结果为1。(0以外的任何数字)AND(0)的结果为0。AND运算符用C ++编写。不要以为它检查数字之间的相等性而感到困惑:事实并非如此。请记住,AND运算符先于OR运算符求值。
OR:OR语句非常有用!如果它检查的两个值中的一个(或两个)均为TRUE,则返回TRUE。例如,(1)OR(0)的值为1。(0)OR(0)的值为0。OR表示为||。在C ++中。这些是管道字符。在您的键盘上,它们可能看起来像是拉长的冒号。在我的计算机上,管道与\共享其密钥。请记住,OR将在AND之后求值。
可以在单个语句中组合多个布尔运算符;通常,当为if语句创建复杂的表达式时,这样做会非常有价值。什么是!(1 && 0)?当然,这是正确的。确实是因为1 && 0的值为0,!0的值为TRUE(即1)。
尝试其中的一些-它们并不难。如果您有任何疑问,
A. !( 1 || 0 ) ANSWER: 0
B. !( 1 || 1 && 0 ) ANSWER: 0 (AND is evaluated before OR)
C. !( ( 1 || 0 ) && 0 ) ANSWER: 1 (Parenthesis are useful)
如果您喜欢本节,则可能需要更多地看一下布尔代数。