367 lines
28 KiB
HTML
367 lines
28 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>逻辑运算符</title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_language_operator_logical skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading">逻辑运算符</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-language.html">language</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>返回布尔运算的结果。</p>
|
|
<table class="wikitable" style="font-size:85%;">
|
|
<tr>
|
|
<th rowspan="2">运算符名</th>
|
|
<th rowspan="2">语法</th>
|
|
<th rowspan="2"><a href="cpp-language-operators.html">可重载</a></th>
|
|
<th colspan="2">原型示例(对于类 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">class</span> T</span></span> )</th>
|
|
</tr>
|
|
<tr>
|
|
<th>类内定义</th>
|
|
<th>类外定义</th>
|
|
</tr>
|
|
<tr>
|
|
<td>非</td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">not a</span></span>
|
|
<p><code>!a</code></p>
|
|
</td>
|
|
<td style="background: #90ff90; color: black; vertical-align: middle; text-align: center;" class="table-yes">是</td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> T<span class="sy4">::</span><span class="me2">operator</span><span class="sy3">!</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> operator<span class="sy3">!</span><span class="br0">(</span><span class="kw4">const</span> T <span class="sy3">&</span>a<span class="br0">)</span><span class="sy4">;</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td>与</td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">a and b</span></span>
|
|
<p><code>a && b</code></p>
|
|
</td>
|
|
<td style="background: #90ff90; color: black; vertical-align: middle; text-align: center;" class="table-yes">是</td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> T<span class="sy4">::</span><span class="me2">operator</span><span class="sy3">&&</span><span class="br0">(</span><span class="kw4">const</span> T2 <span class="sy3">&</span>b<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> operator<span class="sy3">&&</span><span class="br0">(</span><span class="kw4">const</span> T <span class="sy3">&</span>a, <span class="kw4">const</span> T2 <span class="sy3">&</span>b<span class="br0">)</span><span class="sy4">;</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td>同或</td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">a or b</span></span>
|
|
<p><code>a || b</code></p>
|
|
</td>
|
|
<td style="background: #90ff90; color: black; vertical-align: middle; text-align: center;" class="table-yes">是</td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> T<span class="sy4">::</span><span class="me2">operator</span><span class="sy3">||</span><span class="br0">(</span><span class="kw4">const</span> T2 <span class="sy3">&</span>b<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> operator<span class="sy3">||</span><span class="br0">(</span><span class="kw4">const</span> T <span class="sy3">&</span>a, <span class="kw4">const</span> T2 <span class="sy3">&</span>b<span class="br0">)</span><span class="sy4">;</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<dl>
|
|
<dd><b>注解</b><br /></dd>
|
|
</dl>
|
|
<ul>
|
|
<li>关键词形式(<span class="t-c"><span class="mw-geshi cpp source-cpp">and</span></span>、<span class="t-c"><span class="mw-geshi cpp source-cpp">or</span></span>、<span class="t-c"><span class="mw-geshi cpp source-cpp">not</span></span>)和符号形式(<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">&&</span></span></span>、<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">||</span></span></span>、<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span></span></span>)的使用可以互相代替(见<a href="cpp-language-operator_alternative.html">代用表示</a>)</li>
|
|
<li>所有内建运算符都返回 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span>,而大多数<a href="cpp-language-operators.html">用户定义重载</a>亦返回 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span>,以使用户定义运算符可以与内建版本相同的方式使用。然而,用户定义重载中能以任何类型为返回类型(包括 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span>)。</li>
|
|
<li>内建运算符 <code><b>&&</b></code> 和 <code><b>||</b></code> 进行短路求值(若在求值第一个操作数后结果已知,则不求值第二个),但重载的运算符表现类似函数调用,并始终对两个操作数都进行求值。</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">解释</span></h3>
|
|
<p>逻辑运算符的形式为</p>
|
|
<table class="t-sdsc-begin">
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><code><b>!</b></code> <span class="t-spar">操作数</span></td>
|
|
<td>(1)</td>
|
|
<td class="t-sdsc-nopad"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><span class="t-spar">左操作数</span> <code><b>&&</b></code> <span class="t-spar">右操作数</span></td>
|
|
<td>(2)</td>
|
|
<td class="t-sdsc-nopad"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><span class="t-spar">左操作数</span> <code><b>||</b></code> <span class="t-spar">右操作数</span></td>
|
|
<td>(3)</td>
|
|
<td class="t-sdsc-nopad"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
</table>
|
|
<div class="t-li1"><span class="t-li">1)</span> 逻辑非(NOT)</div>
|
|
<div class="t-li1"><span class="t-li">2)</span> 逻辑与(AND)</div>
|
|
<div class="t-li1"><span class="t-li">3)</span> 逻辑或(inclusive OR)</div>
|
|
<p>若操作数并非 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span>,则用<a href="cpp-language-implicit_conversion.html">按语境转换为 bool</a> 规则将它转换为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span>:仅当对某个虚构的临时量 <code>t</code>,声明 <code>bool t(arg)</code> 良构时,它才是良构的。</p>
|
|
<p>其结果是 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> 纯右值。</p>
|
|
<p>对于内建的逻辑非运算符,若操作数为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span> 则结果为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>。否则结果为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span>。</p>
|
|
<p>对于内建的逻辑与运算符,若两个运算数都是 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span> 则结果为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>。否则结果为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span>。此运算符<a href="https://en.wikipedia.org/wiki/Short-circuit_evaluation" class="extiw" title="enwiki:Short-circuit evaluation">短路求值</a>:若第一操作数为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span>,则不求值第二操作数。</p>
|
|
<p>对于内建的逻辑或运算符,若第一或第二操作数之一(或两者同)为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>,则结果为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>。此运算符短路求值:若第一操作数为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>,则不求值第二操作数。</p>
|
|
<p>注意<a href="cpp-language-operator_arithmetic.html">逐位逻辑运算符</a>不进行短路求值。</p>
|
|
<h3><span class="mw-headline" id=".E7.BB.93.E6.9E.9C">结果</span></h3>
|
|
<table class="wikitable">
|
|
<tr>
|
|
<th><span class="t-c"><span class="mw-geshi cpp source-cpp">a</span></span></th>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<th><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span>a</span></span></th>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
</tr>
|
|
</table>
|
|
<table class="wikitable">
|
|
<tr>
|
|
<th colspan="2" rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">and</span></span></th>
|
|
<th colspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">a</span></span></th>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">b</span></span></th>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
</tr>
|
|
</table>
|
|
<table class="wikitable">
|
|
<tr>
|
|
<th colspan="2" rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">or</span></span></th>
|
|
<th colspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">a</span></span></th>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">b</span></span></th>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span></td>
|
|
</tr>
|
|
</table>
|
|
<p>在<a href="cpp-language-overload_resolution.html#.E8.B0.83.E7.94.A8.E9.87.8D.E8.BD.BD.E8.BF.90.E7.AE.97.E7.AC.A6">面对用户定义运算符的重载决议</a>中,下列内建函数签名参与重载决议:</p>
|
|
<table class="t-dcl-begin">
|
|
<tbody>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> operator<span class="sy3">!</span><span class="br0">(</span><span class="kw4">bool</span><span class="br0">)</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> operator<span class="sy3">&&</span><span class="br0">(</span><span class="kw4">bool</span>, <span class="kw4">bool</span><span class="br0">)</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span> operator<span class="sy3">||</span><span class="br0">(</span><span class="kw4">bool</span>, <span class="kw4">bool</span><span class="br0">)</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl-sep">
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
|
<div class="t-example">
|
|
<div class="t-example-live-link"></div>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="co2">#include <iostream></span>
|
|
<span class="co2">#include <string></span>
|
|
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
|
|
<span class="br0">{</span>
|
|
<span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span>
|
|
<span class="kw4">int</span><span class="sy2">*</span> p <span class="sy1">=</span> <span class="sy3">&</span>n<span class="sy4">;</span>
|
|
<span class="co1">// 指针可以转换为 bool</span>
|
|
<span class="kw1">if</span><span class="br0">(</span> p <span class="sy3">&&</span> <span class="sy2">*</span>p <span class="sy1">==</span> <span class="nu0">2</span> <span class="co1">// "p &&" 后可安全使用 "*p"</span>
|
|
<span class="sy3">||</span> <span class="sy3">!</span>p <span class="sy3">&&</span> n <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">2</span> <span class="br0">)</span> <span class="co1">// || 的优先级低于 &&</span>
|
|
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"true<span class="es1">\n</span>"</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 流也可以转换为 bool</span>
|
|
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"输入 'quit' 以退出。<span class="es1">\n</span>"</span><span class="sy4">;</span>
|
|
<span class="kw1">for</span><span class="br0">(</span><a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> line<span class="sy4">;</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"> "</span>
|
|
<span class="sy3">&&</span> <a href="cpp-string-basic_string-getline.html"><span class="kw1256">std::<span class="me2">getline</span></span></a><span class="br0">(</span><a href="cpp-io-cin.html"><span class="kw1756">std::<span class="me2">cin</span></span></a>, line<span class="br0">)</span>
|
|
<span class="sy3">&&</span> line <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">"quit"</span><span class="sy4">;</span> <span class="br0">)</span>
|
|
<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<p>输出:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="text source-text">
|
|
<pre class="de1">true
|
|
输入 'quit' 以退出。
|
|
> test
|
|
> quit</pre></div>
|
|
</div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E6.A0.87.E5.87.86.E5.BA.93">标准库</span></h3>
|
|
<p>因为 <code>operator&&</code> 和 <code>operator||</code> 的短路求值性质对重载不适用,又因为有布尔语义的类型不常见,故只有二个标准库类重载了这些运算符:</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-numeric-valarray-operator_arith.html"><span class="t-lines"><span>operator!</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>对 valarray 的每个元素应用一元算术运算符<br />
|
|
<span class="t-mark">(<code>std::valarray<T></code> 的公开成员函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-numeric-valarray-operator_arith3.html"><span class="t-lines"><span>operator&&</span><span>operator||</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>对两个 valarray 的每个元素,或一个 valarray 的每个元素和一个值应用二元运算符<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-io-basic_ios-operator!.html"><span class="t-lines"><span>operator!</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>检查是否有错误发生(<a href="cpp-io-basic_ios-fail.html"><tt>fail()</tt></a> 的同义词)<br />
|
|
<span class="t-mark">(<code>std::basic_ios<CharT,Traits></code> 的公开成员函数)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
|
<p><a href="cpp-language-operator_precedence.html">运算符优先级</a></p>
|
|
<p><a href="cpp-language-operators.html">运算符重载</a></p>
|
|
<table class="wikitable">
|
|
<tr style="text-align:center">
|
|
<th colspan="7">常见运算符</th>
|
|
</tr>
|
|
<tr style="text-align:center">
|
|
<td><a href="cpp-language-operator_assignment.html">赋值</a></td>
|
|
<td><a href="cpp-language-operator_incdec.html">自增<br />
|
|
自减</a></td>
|
|
<td><a href="cpp-language-operator_arithmetic.html">算术</a></td>
|
|
<td><strong class="selflink">逻辑</strong></td>
|
|
<td><a href="cpp-language-operator_comparison.html">比较</a></td>
|
|
<td><a href="cpp-language-operator_member_access.html">成员访问</a></td>
|
|
<td><a href="cpp-language-operator_other.html">其他</a></td>
|
|
</tr>
|
|
<tr style="text-align:center">
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp">a <span class="sy1">=</span> b<br />
|
|
a <span class="sy2">+</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy2">-</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy2">*</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy2">/</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy2">%</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy3">&</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy3">|</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy3">^</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy1"><<=</span> b<br />
|
|
a <span class="sy1">>>=</span> b</span></span></p>
|
|
</td>
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">++</span>a<br />
|
|
<span class="sy2">--</span>a<br />
|
|
a<span class="sy2">++</span><br />
|
|
a<span class="sy2">--</span></span></span></p>
|
|
</td>
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">+</span>a<br />
|
|
<span class="sy2">-</span>a<br />
|
|
a <span class="sy2">+</span> b<br />
|
|
a <span class="sy2">-</span> b<br />
|
|
a <span class="sy2">*</span> b<br />
|
|
a <span class="sy2">/</span> b<br />
|
|
a <span class="sy2">%</span> b<br />
|
|
~a<br />
|
|
a <span class="sy3">&</span> b<br />
|
|
a <span class="sy3">|</span> b<br />
|
|
a <span class="sy3">^</span> b<br />
|
|
a <span class="sy1"><<</span> b<br />
|
|
a <span class="sy1">>></span> b</span></span></p>
|
|
</td>
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span>a<br />
|
|
a <span class="sy3">&&</span> b<br />
|
|
a <span class="sy3">||</span> b</span></span></p>
|
|
</td>
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp">a <span class="sy1">==</span> b<br />
|
|
a <span class="sy3">!</span><span class="sy1">=</span> b<br />
|
|
a <span class="sy1"><</span> b<br />
|
|
a <span class="sy1">></span> b<br />
|
|
a <span class="sy1"><=</span> b<br />
|
|
a <span class="sy1">>=</span> b<br />
|
|
a <span class="sy1"><=></span> b</span></span></p>
|
|
</td>
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp">a<span class="br0">[</span>b<span class="br0">]</span><br />
|
|
<span class="sy2">*</span>a<br />
|
|
<span class="sy3">&</span>a<br />
|
|
a<span class="sy2">-</span><span class="sy1">></span>b<br />
|
|
a.<span class="me1">b</span><br />
|
|
a<span class="sy2">-</span><span class="sy1">></span><span class="sy2">*</span>b<br />
|
|
a.<span class="sy2">*</span>b</span></span></p>
|
|
</td>
|
|
<td>
|
|
<p><span class="t-c"><span class="mw-geshi cpp source-cpp">a<span class="br0">(</span>...<span class="br0">)</span><br />
|
|
a, b<br />
|
|
<span class="sy4">?</span> <span class="sy4">:</span></span></span></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="7">特殊运算符</th>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="7">
|
|
<p><a href="cpp-language-static_cast.html"><tt>static_cast</tt></a> 转换一个类型为另一相关类型<br />
|
|
<a href="cpp-language-dynamic_cast.html"><tt>dynamic_cast</tt></a> 在继承层级中转换<br />
|
|
<a href="cpp-language-const_cast.html"><tt>const_cast</tt></a> 添加或移除 <a href="cpp-language-cv.html">cv</a> 限定符<br />
|
|
<a href="cpp-language-reinterpret_cast.html"><tt>reinterpret_cast</tt></a> 转换类型到无关类型<br />
|
|
<a href="cpp-language-explicit_cast.html">C 风格转型</a> 以 <code>static_cast</code> 、 <code>const_cast</code> 及 <code>reinterpret_cast</code> 的混合转换一个类型到另一类型<br />
|
|
<a href="cpp-language-new.html"><tt>new</tt></a> 创建有动态存储期的对象<br />
|
|
<a href="cpp-language-delete.html"><tt>delete</tt></a> 销毁先前由 new 表达式创建的对象,并释放其所拥有的内存区域<br />
|
|
<a href="cpp-language-sizeof.html"><tt>sizeof</tt></a> 查询类型的大小<br />
|
|
<a href="cpp-language-sizeof....html"><tt>sizeof...</tt></a> 查询<a href="cpp-language-parameter_pack.html">形参包</a>的大小<span class="t-mark-rev t-since-cxx11">(C++11 起)</span><br />
|
|
<a href="cpp-language-typeid.html"><tt>typeid</tt></a> 查询类型的类型信息<br />
|
|
<a href="cpp-language-noexcept.html"><tt>noexcept</tt></a> 查询表达式是否能抛出异常<span class="t-mark-rev t-since-cxx11">(C++11 起)</span><br />
|
|
<a href="cpp-language-alignof.html"><tt>alignof</tt></a> 查询类型的对齐要求<span class="t-mark-rev t-since-cxx11">(C++11 起)</span></p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table class="t-dsc-begin"></table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|