在 C++ 中使用条件运算符
本文将解释如何使用 C++ 条件运算符。
在 C++ 中使用条件运算符作为 rvalue
表达式
除了常见的算术、逻辑和赋值运算符之外,C++ 还提供了一些特殊的运算符,其中之一是条件三元运算符。三元意味着运算符采用三个操作数。它被称为条件运算符,因为它的工作方式类似于 if-else
语句。运算符的形式为 E1 ? E2 : E3
,其中第一个操作数可以被视为 if
条件,它被评估并转换为 bool
值。
如果 bool
值为 true
,则计算以下表达式 (E2
),并产生副作用。否则,将评估第三个表达式 (E3
) 及其副作用。请注意,我们可以使用此运算符作为 rvalue
表达式来有条件地为变量赋值。在下面的示例代码中,我们从用户输入中读取一个整数并计算比较表达式 input > 10
,表示条件运算符中的 E1
操作数。仅当 E1
为真时,变量 n
才被赋予 input
值。
#include <string>
#include <iostream>
using std::cout; using std::endl;
using std::string; using std::cin;
int main() {
int input;
cout << "Enter a single integer: ";
cin >> input;
int n = input > 10 ? input : 10;
cout << "n = " << n << endl;
return EXIT_SUCCESS;
}
输出:
Enter a single integer: 21
n = 21
在 C++ 中使用条件运算符作为 lvalue
表达式
或者,我们可以使用三元运算符作为 lvalue
表达式来有条件地选择进行赋值操作的变量名称。请注意,我们仅将变量名称指定为第二个和第三个操作数。但是,通常你可以指定诸如 cout
之类的表达式,它具有外部副作用;这些效应会像往常一样被执行。
#include <string>
#include <iostream>
using std::cout; using std::endl;
using std::string; using std::cin;
int main() {
int input;
cout << "Enter a single integer: ";
cin >> input;
int n = input > 10 ? input : 10;
cout << "n = " << n << endl;
int m = 30;
(n == m ? n : m) = (m * 10) + 2;
cout << "m = " << m << endl;
return EXIT_SUCCESS;
}
输出:
Enter a single integer: 21
n = 21
m = 302
三元运算符的另一个用例可以在 class
定义中。下面的代码示例演示了这样一个场景,我们为类似于单链表中的节点的 MyClass
结构实现了一个递归构造函数。在这种情况下,我们将构造函数调用指定为第二个操作数,使用 next
参数调用,并继续递归调用堆栈,直到 node.next
评估为 false
值。后者仅适用于 node.next
指针为 nullptr
的情况。
#include <string>
#include <iostream>
struct MyClass {
MyClass* next;
int data;
MyClass(const MyClass& node)
: next(node.next ? new MyClass(*node.next) : nullptr), data(node.data) {}
MyClass(int d) : next(nullptr), data(d) {}
~MyClass() { delete next ; }
};
int main() {
return EXIT_SUCCESS;
}
相关文章
在 C++ 中通过掷骰子生成随机值
发布时间:2023/04/09 浏览次数:169 分类:C++
-
本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。
在 C++ 中使用模板的链表
发布时间:2023/04/09 浏览次数:158 分类:C++
-
本文解释了使用模板在 C++ 中创建链表所涉及的各个步骤。工作程序演示了一个链表,该链表使用模板来避免在创建新变量时声明数据类型的需要。
在 C++ 中添加定时延迟
发布时间:2023/04/09 浏览次数:142 分类:C++
-
本教程将为你提供有关在 C++ 程序中添加定时延迟的简要指南。这可以使用 C++ 库为我们提供的一些函数以多种方式完成。
在 C++ 中创建查找表
发布时间:2023/04/09 浏览次数:155 分类:C++
-
本文重点介绍如何创建查找表及其在不同场景中的用途。提供了三个代码示例以使理解更容易,并附有代码片段以详细了解代码。
如何在 C++ 中把字符串转换为小写
发布时间:2023/04/09 浏览次数:63 分类:C++
-
介绍了如何将 C++ std::string 转换为小写的方法。当我们在考虑 C++ 中的字符串转换方法时,首先要问自己的是我的输入字符串有什么样的编码
如何在 C++ 中确定一个字符串是否是数字
发布时间:2023/04/09 浏览次数:163 分类:C++
-
本文介绍了如何检查给定的 C++ 字符串是否是数字。在我们深入研究之前,需要注意的是,以下方法只与单字节字符串和十进制整数兼容。
如何在 c++ 中查找字符串中的子字符串
发布时间:2023/04/09 浏览次数:65 分类:C++
-
本文介绍了在 C++ 中检查一个字符串是否包含子字符串的多种方法。使用 find 方法在 C++ 中查找字符串中的子字符串
如何在 C++ 中把字符串转换为 Char 数组
发布时间:2023/04/09 浏览次数:107 分类:C++
-
本文介绍了在 C++ 中把字符串转换为 char 数组的多种方法。使用 std::basic_string::c_str 方法将字符串转换为 char 数组