![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
operator運算元 在 コバにゃんチャンネル Youtube 的最佳解答
![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
Search
這次影片介紹C語言的Bitwise operator (位元 運算 子)的用法及如何將某個bit設成1或設成0, 或將0,1切換(toggle).課程裡面的範例程式原始碼可從以下連結 ... ... <看更多>
前言**運算子(Operator)可以說是程式語言最重要的功能之一,但是回想起來一開始學程式時卻是有點痛苦的回憶,因為它跟我們所學的數學邏輯有點像又有些 ... ... <看更多>
#1. 運算子、運算元*一個運算式(Expression)是由運算元(Operant ...
運算式、運算子、運算元. *一個運算式(Expression)是由運算元(Operant)和運算子(Operator)所共同組成。 *運算式中做為運算的資料稱為運算元,運算元可以是常數、變數、 ...
#2. 運算子
運算. 運算子, 例子. 加法. +, i + 9. 減法. -, a - c. 乘法. *, a * b. 除法. /, x / y. 餘數. %, r % s. 遞增. ++, ++s. 遞減. --, --s. 負數.
#3. 運算式與運算子- JavaScript - MDN Web Docs
9<<2 得到36,因為1001 向左移動2 bits 會得到100100, 也就是二進位的36。 [有號右移](</zh-TW/docs/Web/JavaScript/Reference/Operators/ ...
運算式其實是一個簡單的函式,它是由 運算子(Operator) 與 運算元(Operant) 組合而成,透過符號或單詞來運算他前後的數值,並回傳一個結果。 以下面程式碼為例: var ...
運算子operator. 運算子可將特定個數的運算元,做特定的計算之後,產生出一個數值。 例如加法將2 個運算元相加,產生出一個數值; 變號則將1 個運算元的正負反轉,產生 ...
#6. 運算子operator - Python 教學 - STEAM 教育學習網
在程式語言裡,如果要進行「運算式」的計算,就必須要使用「運算元Operand」和「運算子Operator」相搭配,運算元表示的是需要計算的數值,運算子代表特定運算功能的 ...
#7. 運算
運算式(Expression) ; 運算元(Operand) 運算元可以是由一個或多個常數、變數、函數或其他運算式組合而成。 ; 運算子(Operator) 運算子是用以指定運算方式的符號,如+, -, *, ...
#8. Java 的算術運算子
Java 的算術運算子(arithmetic operator) 包含加、減、乘、除、取餘數,皆需兩 ... Java 的單元運算子(unary operator) 僅需一個運算元,有表示數字為正負的+ 、 - ,.
在邏輯上有所謂的「且」、「或」與「反」運算,在C 中也提供這幾個基本邏輯運算所需的邏輯運算子(Logical operator),分別為「且」(&&)、「或」(||)及「反相」( ...
#10. operator --- 標準運算子替代函式— Python 3.11.1 說明文件
operator module(模組)提供了一套與Python 原生運算子對應的高效率函式。例如, operator.add(x, y) 與表示式 x+y 相同。許多函式名與特殊方法名相同,只是沒有雙 ...
#11. [JS] JavaScript 運算子(Operator) | PJCHENder 未整理筆記
[JS] JavaScript 運算子(Operator). 運算式與運算子 @ MDN. [TOC]. 條件判斷(conditional statement). 物件(object ...
#12. Python 速查手冊- 1.6 運算子 - 程式語言教學誌
Python 的算術運算子(arithmetic operator) 包含加、減、乘、除、取餘數,皆需兩個運算元(operand) 構成運算式(expression) ,如下列表 ...
#13. C++ 內建運算子、優先順序和關聯性 - Microsoft Learn
本文內容. 優先順序與關聯性; 替代拼字; C++ 運算子優先順序和關聯性資料表; 另請參閱. C++ 語言包含所有C 運算子,並且新增了數個新的運算子。
#14. [C++, CPP 教學教程教材Tutorial] 運算子(Operator)
介紹C++的運算子(Operator), 一元運算子, 二元運算子, 左結合性(Left to Right), 右結合性(Right to Left), 優先權, 算術運算子, 指派運算子, 相等運算子, 關係運算子, ...
#15. 運算式(Expression)
數值放入左邊的變數。 Page 8. 8. 15. 指定運算子(Assignment Operator).
#16. 運算式和運算子
運算式是由運算元(operand)和運算子(operator)組成的,如左下圖,. = 和+ 是運算子,sum 和i 是運算元。敘述則是在運算式後加上分號;。 二個或二個以上的敘述可使用大 ...
#17. 第六章簡介運算子超載(Operator Overloading)
(Operator Overloading). 6-1 運算子超載的基礎. 6-2 超載二元運算子 ... 在類別中建立運算子函數(operator functions) ... 二元運算子(Binary Operators).
#18. 運算子 - 中央大學
亦稱「運算元」或「運算符號」),舉例說明如下: 「$total = $a + $b;」,其中" $a + $b "稱為「表示式」(expressions),"+" 即稱為運算子(operator) 在PHP的運算子 ...
#19. [第三週]JavaScript — Operator 運算子. 學習目標 - MiaHsu
運算 子(Operator) · 對變數(variable)或值(value)進行操作的特殊字元 · 是一種Java Script 幫你寫好的特殊的函式,讓我們可以透過中綴表示法(infix)將這些參數傳入 ...
#20. 關係運算子- 维基百科,自由的百科全书
關係運算子在計算機科學的編程語言中,是測試或定義兩個實體之間某種關係的構造或操作符。一共有六种关系,分别为: 小于 、 大于 、 小于等于 、 大于等于 、 等于 和 ...
#21. [C++] 程式設計教學:運算子(Operator) | 開源技術教學網
在程式語言中,運算子是使用符號的指令。由於運算子無法再化約成更細的指令,運算子可視為程式語言的基本指令。本文介紹C++ 的運算子。
#22. 運算子· 語言學習筆記
加法與減法運算子是由左而右做計算. [遞增與遞減]. Increment operator ++; Decrement operator --. 前置與後置.
#23. 檢索運算元
除了Web of Science 核心合輯中的所有欄位(AF) 檢索之外,單一查詢中使用的布林邏輯運算元的數量沒有限制。所有欄位檢索的限制為49 個布林或相近運算元。 Korean Journal ...
#24. 運算子- Java備忘筆記 - GitBook
運算子是一些特殊的符號可以對一個或兩個或三個運算元進行處理,從而得到結果。 運算子優先權Operator Precedence.
#25. 數學和字串運算子 - IBM
您可以使用數學運算子在表示式中加、減、除及乘上數值運算元。 您可以使用字串運算子 ... 下表說明規則檔中支援的數學運算子。 ... 表2. 字串運算子(string operator) ...
#26. 第八章- 運算子多載Operator Overloading
使用this來取得主要運算元. • 其餘運算元位於參數列上. • 最左邊的物件型態必須跟運算子的類別相同. • 例如:Date1+Date2, 則Date1的operator+(Date2)函式被呼叫 ...
#27. 運算子與運算式
所謂運算子(Operator),指的是可以對運算元(Operand) 執. 行特定功能的特殊符號。本書介紹以下四類常用運算子:算術. (Arithmetic) 運算子、邏輯(Logical) 運算子、 ...
#28. 9. Operator Overloading in C++
8. 除了operator( )外,運算子覆載函式之參數不可預設初值(default arguments is illegal)。 程式範例: oop_ex83.cpp. 8.3 Overloading Unary and Binary Operators. 運算 ...
#29. 第五章運算式、運算子與敘述
運算元 (operand):如變數sum,或常數10 等. 運算子(. ) 如. 與. 等符號. ○ 運算子(operator):如+, -, *,/ 與= 等符號. 運算式可以出現在設值敘述.
#30. Expression Tree - 運算式 - 朝陽科技大學
諸如C, C++ 等語言, 都提供一個 operator precedence table , 其實並不是什麼新的觀念, 只是因為它的運算子太多, 必須將上述規則整理成一個表格而已。 o.p.t. 的功用就是 ...
#31. 配置運算式- ato.negation.operator - PTC Support
若要在運算式中指定自訂邏輯運算子,請在內容WT_HOME\codebase\wt.properties 檔案中設定以下的值:. • ato.conjunction.operator. • ato.disjunction.operator.
#32. JavaScript 運算子Operators - Fooish 程式技術
比較運算子(Comparison Operators); 算術運算子(Arithmetic Operators); 位元運算子(Bitwise Operators); 邏輯運算子(Logical Operators); 字串運算子 ...
#33. 考古--operator 為什麼翻譯為『運算子』
大部分的程式設計教材都會將operator 翻譯為『運算子』, 我自己對於『子』一直覺得很疑惑, 倒底是什麼意思?有些人會說這個『子』就 ...
#34. Operator Overloading 運算元重載 - 南臺開放式課程平台
目前位置:主選單>工學院>物件導向程式設計>Operator Overloading 運算元重載. Operator Overloading 運算元重載. 課程講義. 課程影音. 2.1 節講義 · 簡易版實作 ...
#35. ternary operator - 維基詞典,自由的多語言詞典
正體: 三元運算子[自由軟體] · 简体: 三元运算符[自由软体] · 正體: 三進運算子[電子計算機].
#36. Prefix
TwoResult(Token,Operand1,Operand2) ); } else // 存入運算元堆疊--需做Ascii碼 ... public boolean IsOperator(int Operator) { if ( Operator == 43 || Operator ...
#37. 算術運算子 - 18DICE
算術運算子(arithmetic operator)分為兩大類. • 一元運算子(unary operator) (只需要一個運算元). 例如: 遞增/遞減運算子. K=K++;. • 二元運算子(binary operator) ...
#38. JS-運算元Operands、運算子Operator、優先性Precedence
參考資料: MDN Web, 六角學院. 運算子優先序(Operator precedence)決定了運算子彼此之間被語法解析的方式,優先序較高的運算子會成為優先序較低運算 ...
#39. 第4 章運算子與運算式
4-1 甚麼是運算式? ○在C++ 程式語言中, 大部分的敘述都是由. 運算式(Expression) 所構成, 至於運算式. 則是由一組一組的運算子(Operator) 與運. 算元(Operand) 組成 ...
#40. Lecture 3
算術運算. ▫ 二元運算子: +, -, *, /, =, %. ▫ 一元運算子: --, ++ ... 目的:對兩個資料(運算元) 作比較以判斷他們的關係。 ... 布林運算子/ Boolean Operator.
#41. C語言的Bitwise operator(位元運算子)介紹, 包含圖解及範例
這次影片介紹C語言的Bitwise operator (位元 運算 子)的用法及如何將某個bit設成1或設成0, 或將0,1切換(toggle).課程裡面的範例程式原始碼可從以下連結 ...
#42. Python for Beginners (4)|運算子(Operators)、輸入(Input)
運算式(Expression):由運算元(Operant) 和運算子(Operator) 所共同組成。 Python 程式語言中所使用的運算子(Operators) 類型(如下圖),讀者可以試著 ...
#43. 程式語言CH7 - Quizlet
What is an infix operator? 中序,平常使用的運算式,將運算元放在運算子兩邊像是a+b*c. When do we call operators "adjacent"? 如果兩個運算元被單一的運算子分開 ...
#44. C# 運算子Operator | Lance 程式筆記 - - 點部落
指定運算子. 在C#中," = "的意思和數學上的等於是不同,在這裡是表示指定的意思,就是將右邊的值指定給左邊的變數 { // 將100指定給變數num int num ...
#45. 4.1.3 運算子
運算 子(Operators)對照表,運算優先順序越往下越低:. -> 方法呼叫、解參考++ 遞增, -- 遞減** 乘冪(次方) ! 非,~ 位元運算的非,\ 參考=~ 比對相符,!~
#46. PHP教學- 運算子(Operators) - 上 - 小殘的程式光廊
介紹PHP中運算子的用法,包含種類、優先順序、算術運算子(Arithmetic Operator)、指派運算子(Assignment Operator)、位元運算子(Bitwise Operator)
#47. 3.6 運算子(Operator) - JavaScript - 線上教材 - WebMix
3.6 運算子(Operator). 在 javascript/practice 資料夾底下,建立 operator.html 檔案,以便練習及觀察:. 指派運算子(assignment). 等號(=).
#48. Dart:會用但不會講的運算子 - Jonny Huang 的學習筆記
前言**運算子(Operator)可以說是程式語言最重要的功能之一,但是回想起來一開始學程式時卻是有點痛苦的回憶,因為它跟我們所學的數學邏輯有點像又有些 ...
#49. 第三章運算子 - Python 基礎實戰
運算子﹙operator﹚的功用是結合物件,組成運算式﹙expression﹚,以求算某些結果;物件又稱為運算元﹙operand﹚。例如, x + y * z 就是一個運算式, ...
#50. 算術運算子、比較運算子、邏輯運算子、真值表、字串運算子
運算子運算式、運算子、運算元*一個運算式(Expression)是由運算元(Operant)和運算子(Operator)所共同組成。 *運算式中做為運算的資料稱為運算元,運算元可以是常數、 ...
#51. 運算式、運算子
運算元 (operand ):如變數sum,或常數10等. □ 運算子(operator): 如+、-、*與/等運算符號。 Page 3. 3. 2014/10/29. 指定運算子(assignment ...
#52. Ruby運算子 - tw511教學網
在檔案 unary-operator.rb 中,寫下面的程式碼。 #!/usr/bin/ruby -w puts("Unary operator") puts(~5) puts(~- ...
#53. 學習Swift程式語言:運算子重載(Operator Overloading)簡介
好了,我們說的夠多了,讓我們來看看運算子超載(Operator Overloading)是怎麼一回事吧。 挑戰. 這次的教學單的任務非常的容易:擴充乘法運算符的數量為標準功能。
#54. operator 的中文翻譯 - 英漢字典
operator 運算符操作員,行家,經營者,運算元來源(2): F.O.L.D.O.C [foldoc] operator A symbol used as a function, with {infix syntax} if it has two arguments ...
#55. [Java] 5-2 Operators運算子 - 給你魚竿- 痞客邦
Java的運算子很多而且都要會用以下這篇就介紹有哪些Operators 1. 官網https://docs.oracle.com/javase/tutorial/java/nutsandbolt.
#56. 使用位元運算子邏輯進行設計 - DigiKey
實作位元運算邏輯可將程式碼減至最少並提高循環速度。 專案參數. 攝影滑軌專案涉及五個瞬動接觸SPST 開關,在滑軌驅動馬達運作時選擇方向和速度。
#57. 运算元-翻译为英语-例句中文 - Reverso Context
但是如果运算元不是数字,加号+ 则会将其转化为数字。 The unary plus or, in other words, the plus operator + applied to a single value, doesn't do anything to ...
#58. Python教學-控制結構(4)運算子優先順序Operator precedence
運算 子優先順序(operator precedence)在包含Python 及其他的程式語言都是很重要的概念。它是數學運算順序(如先乘除後加減)概念的延伸,並包含其的 ...
#59. Swift operator 運算子 - Makee.io Blog
指定運算子(Assignment operator). 定義. 等號右邊的數值指定到等號左邊. = X = Y, 將Y 的值指定給X Imgur. +=. X += Y,將X + Y 的值指定給X Imgur.
#60. 資料集的述詞運算式語法 - Salesforce Help
定義述詞運算式時,您必須使用有效的語法。 ... <dataset column> <operator> <value> ... 空格須位於運算子和值之間,及邏輯運算子前後。
#61. 【C++ 20】三路比較運算子( operator<=> )
為了使得 int_holder 的行為盡量類似於內建的 int 型別, 我們肯定還需要增加不少友誼比較運算子, 使得 int_holder 類別可以和 bool , char , unsigned ...
#62. 你懂JavaScript 嗎?#2 暖身(๑•̀ㅂ•́)و✧ Part 1 - 運算子、運算式
注意,JavaScript 引擎會在每次執行前即時編譯程式碼,接著立刻執行編譯後的指令。 運算子(Operators). 對變數或值進行操作的字元,例如: a = b + 1 中 ...
#63. Python基礎入門| 運算子多載(Operator Overloading)
Python基礎入門| 運算子多載(Operator Overloading). Python 運算符(Operators)適用於內置類別(built-in classes)。 同一個運算符(Operators)對不同 ...
#64. Python的三元運算子(ternary conditional operator) - ldkrsi's Blog
三元運算子(ternary conditional operator) 在C/C++裡以?: (問號冒號)表示在python中則以表示資料來源.
#65. 位元運算 - WiwiHo 的競程筆記
這叫做bitwise operation。 以下是C++ 的位元運算子列表:. 運算子, 說明. AND, A & B ...
#66. 運算子- XQ的點點滴滴
在學會使用回傳值的概念之後,接下來,我們先來介紹腳本中,要串接回傳值,建立各種運算的關係時,所需要用到的元素, 這些元素,稱之為運算子(operator) ...
#67. JavaScript ES6 的展開運算子(Spread Operator)
展開運算子(Spread Operator)和其餘運算子(Rest Operator)是ES6 的其中兩種新特性,使用的符號都是(...),但使用起來的情境跟效果會不一樣。
#68. 運算子、運算式- Python
(五)邏輯運算子(Logical operator). and(且)、or(或)、not(否)三個運算子,運算優先順序為not > and > or 。注意:True、False 的字首為大寫。
#69. 14-2 關係運算元
14-2 關係運算元. MATLAB 的關係運算元(Relational Operators)有下列六種:. 關係運算元, 說明. == ...
#70. 第七章講授重點
運算子,稱為取址運算子(address operator),. 是傳回變數(或稱運算元)所在位址的運算子. • 例如, int y = 5; int *yPtr;. 敘述式. yPtr = &y;.
#71. 56. PHP 的邏輯運算子(Logical Operators) 有哪些? - Jollen
56. PHP 的邏輯運算子(Logical Operators) 有哪些? jollen 發表於October 27, 2006 4:15 PM. 表-PHP 的邏輯運算子. 運算子 範例 用途and $a and $b $a 與$b 同為true ...
#72. TypeScript 中的三元運算子| D棧 - Delft Stack
TypeScript 條件運算子是採用三個運算元的三元運算子。 ... TypeScript 中的三元運算子. Migel Hewage Nimesha Jun-21, 2022 TypeScript TypeScript Operator.
#73. Java運算子 - 聰明的生活
有了基本型態的關念後,再來是如何利用基本型態來做運算、轉換或指定,做型態間的運算、轉換或指定,中間夾者的就是運算子(operator),運算子是由 ...
#74. Re: [問題] 運算子多載一問- 看板C_and_CPP - 批踢踢實業坊
引述《d630200x (DOGE)》之銘言: : 在一般運算子多載中的宣告為下: 傳回型別operator運算子符號(.....) : 然而看到比如要多載++前置或者是右移運算 ...
#75. [PHP] 三元運算式– Ternary Operator (?:) - 問號/冒號
簡介. 三元運算子,在許多程式語言都會有,基本上您可以把它想成是if的一種簡化. 直接來看例子比較: // Example usage for: Ternary Operator ...
#76. C語言的算術運算子Arithmetic Operators - 程式編輯工具
在C語言中的四則運算,運算元型態,會影響運算方式。 整數相除會得到整數的商以整數的餘數,想取得商時使用『/』運算子,想取得餘數時則使用『%』。
#77. Google搜尋進階運算元(operator)
Google搜尋進階運算元(operator). 1. + : 強迫google搜尋本來預設為忽略的停止字(stop word), 例如I, the, of. 所以查詢[第一次世界大戰]要打: World ...
#78. [JAVA]運算子-位元運算子(Bitwise Operators) - 程式開發學習之路
[JAVA]運算子-位元運算子(Bitwise Operators). 769. 請往下繼續閱讀.
#79. Java 運算子Operator 運算元operand | 一個超級特務拯救世界 ...
每次運算元 運算子都搞不清楚 這裡來把它區分加強記憶一下 首先 運算子(Operator) 運算元(operand) 3+4=7 + = 都是Operator
#80. PowerShell - 運算子 - 限量ㄟ蓋步
... 邏輯都要用到的關鍵元素,許多人常常會把運算子(Operator)與運算元(Operand)搞 ... 如同一般程式語言一樣,PowerShell有算術運算子, 邏輯運算子.
#81. 【作品】大數運算- Large Integer - Infinite Loop
指派運算子(支援大數、整數或C式字串) void operator=(int); void operator=(const char *); void operator=(const std::string &); NEW ‧正負號
#82. 20 後序運算式(Postfix expression)“235*27-/+63..
20 後序運算式(Postfix expression)“235*27-/+63*+”中的運算元(Operand)皆為個位數,而運算子(Operator)皆為二元運算子,則其運算結果為何?
#83. 運算元(operand)與運算子(operator), 本徵值 ... - 創作大廳
運算元 (operand)與運算子(operator), 本徵值(eigenvalue)與本徵式(eigen function) · 運算子諸如加(+), 減(-), 乘(*), 除(/), 微分(d/dt), 積分( ∫ dt) 稱 ...
#84. C 語言:運算子優先次序和運算次序 - 傑克! 真是太神奇了! - 痞客邦
運算 子優先權(C 語言)Percedence Table 運算子Operator 說明Description 結合順序Associativity 1 ()[]
#85. 運算符(C++ Tutorial - 06 - Operators) - VoiceTube 看影片學英語
學這些英文用法: 運算,變數,邏輯,優先,整數,程式,比較,計算,語言,關係, ... 看看, 運算 子,優先權, 運算 式,指定,除數,遞減,遞增,括號,傳回,算術,位元, ...
#86. 位元XOR運算(^) | 86Duino
C++ 中位元運算AND 以單一符號& 表示,用在兩個整數之間,位元運算AND 運算子會運算每一個位元位置上的值(0/1),依據固定的規則:若兩者皆為1 則輸出是1, ...
#87. Operators [變數的運算符號] - 單元 - 天下創新學院
Operator 為運算子,即為運算符號。在Python中,運算子包含一般進行數學四則運算的算術運算子,例如加、減、乘、除、次方等,進行邏輯運算之邏輯運算子,例如且(and)、 ...
#88. Python 运算符 - 菜鸟教程
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。 运算符, 描述, 实例. in, 如果在指定的序列中找到值返回 ...
#89. C++ Short Hand If Else (Ternary Operator) - W3Schools
Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, ...
#90. A tour of the Dart language
This page shows you how to use each major Dart feature, from variables and operators to classes and libraries, with the assumption that you already know how ...
#91. The Go Programming Language Specification
Index expressions: Slice expressions: Type assertions: Calls: Passing arguments to ... parameters: Instantiations: Type inference: Operators ...
#92. Conditional Rendering - React
Conditional rendering in React works the same way conditions work in JavaScript. Use JavaScript operators like if or the conditional operator to create elements ...
#93. [29] 文法- 運算子優先序、結合性 - CoderBridge
keywords:`operator precedence`,`associativity` ## 運算子優先序在前一章我們介紹到運算式副作用, `()` 本身無法定義一個新的包裹運算式, ...
#94. Java 運算式 - 翻轉工作室
= 指定變數內容. ^. 位元 XOR ; 算術運算子. &. 位元 AND ; +, -. 一元(unary)正負符號. |. 位元 OR.
#95. Kerio Operator v2.6.4评论一个平滑的运算符 - 新广网
自动助理脚本是一个强大的功能; 这些允许您创建广泛的菜单和选项,公告,说明和可用扩展列表的子菜单,并将其呈现给呼叫者。振铃组将使所有成员电话在呼叫 ...
#96. Conditions and loops - Kotlin Programming Language
If expression. In Kotlin, if is an expression: it returns a value. Therefore, there is no ternary operator ( condition ? then : ...
#97. C++ Primer, 5th Edition 中文版(電子書) - 第 28 頁 - Google 圖書結果
此運算子會使一個函式被調用(invoked)。函式的引數可放在括弧內傳入。 ++ operator(++ 運算子)遞增運算子(increment operator)。新增 1 到運算元; ...
#98. 算術運算子
算術運算子(arithmetic operator)分. 為兩大類. •一元運算子(unary operator)(只需要一個運算元). 例如: 遞增/遞減運算子. K=K++;. •二元運算子(binary operator)(需要 ...
operator運算元 在 Re: [問題] 運算子多載一問- 看板C_and_CPP - 批踢踢實業坊 的推薦與評價
※ 引述《d630200x (DOGE)》之銘言:
: 在一般運算子多載中的宣告為下
: 傳回型別 operator運算子符號(.....)
: 然而看到比如要多載++前置或者是右移運算子>>時
: 宣告會變成
: 傳回型別& operator運算子符號(.....)
: 個人不太能理解這個&的意義,翻來翻去也沒有找到解答
首先先確定知道回傳的資料型別為 T& 時,& 表示其回傳的是 reference (參考)
因此其回傳的應為其中一個運算元的本尊,而非暫時物件,不然就會無中生有
下去的問題就變成什麼時候要傳本尊,什麼時候要產生暫時物件
這個跟我們期望這個運算子怎麼作用有關
以 a + b 的結果來說,回傳 a 本尊或 b 本尊都極其不合理.
因為這不只意味著 a + b 計算完之後其結果會存在 a 或 b 上,
也意味著 a + b = 3 這寫法是合法的 (你可以試著寫寫看)
你應該不會期望做完 a + b = 3 之後,是 a 或 b 其中一個會變成 3 吧
可以想成如果每次都回傳一個暫時物件表示計算結果是最簡單的,T& 反而麻煩
但是這樣會遇到一些困難:
1. 語意問題
int a = 3;
int b = 0;
int &c = b = a;
如果我們要讓這語法合法的話,b = a 的計算結果,也就是 operator= 必須回傳 b 本尊
這造就了基本上所有賦值運算都必須要回傳 T&
相對的,因為 ++b 也是種賦值運算
int &c = ++b;
要合法的前提也是 operator++ (pre-) 需要回傳 T&
operator++ (post-) 反而是例外,因為其回傳值與本尊的值就不一樣
int &c = b++; // 這邊的 c 參考的會是 +1 之前的 b,要嘛語意不合理,要嘛無中生有
2. 連鎖呼叫時的複製問題
當你有一種類別物件支援某種可以連鎖呼叫的運算子時,可能會在複製的時候發生問題
例如 cout << a << b << c << d << e;
在語意上是希望達到
cout << a; cout << b; cout << c; cout << d; cout << e;
的效果
這就必須讓 operator<< 的回傳值與其中一個運算元 (cout) 相同
於是我們一方面可能需要回傳時每次都複製一次 cout 造成效率問題,
另一方面也許 cout 根本就因為運作特性不能複製.
或者你根本期望他套用在同一個物件上
因此選擇回傳其中一個運算元 (cout) 的本尊 (reference, T&) 是最適當的方式
就結論來說,C++ 並沒有嚴格要求你是不是要回傳 reference
運算子多載重要的是讓使用者直覺的操作,不要做出不預期的運算
在考量使用者可能的使用情境後,選擇最適當的設計
--
以上都是我的猜想,如果哪裡有什麼問題再麻煩回覆討論一下~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.83.198
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1529243086.A.226.html
※ 編輯: Feis (140.122.83.198), 06/17/2018 22:11:35
... <看更多>