我想知道是否有一种标准的方式,如果我们大声发出印刷符号来阅读<<
和>>
符号?在教授初次使用C ++的学生并讨论/确定需要在特定地方写出的符号时,这就出现了。
最佳答案不应该是“按位移位”或“插入”等名称,因为那些引用更具体的C ++运算符,而不是无上下文符号本身(这是什么我们想要这里)。从这个意义上说,这个问题 与this或this等问题相同,其答案都不能满足这个问题。
一些比较例子:
#include <iostream>
视为“pound include bracket iostream”
括号“。int a, b, c;
读作“int a 逗号 b 逗号 c
分号“。if (a && b) c = 0;
视为“如果打开括号 a 双符号&em> b 紧密括号 c 等于零分号”。 所以一个同等的问题是:我们如何同样阅读cout << "Hello";
?在课堂上的当前时间,我们将这些符号称为“左箭头”和“右箭头”,但如果有更传统的措辞,我宁愿使用它。
陈述这个问题的其他等效方式:
<<
?<<
的常规名称是什么,无论是用于换位,插入还是重载都是全新的?答案 0 :(得分:4)
通过your comment on Slashdot看到这个问题。我建议一个更简单的名字,对于那些使用已经对符号有共同理解的学生。与+
被称为“加号”和-
(通常)称为“减号”的方式相同,您可以通过名称“少”或“少于”来调用<
和>
由“更大”或“大于”。这让人想起大多数学生很早就开始教授的数学运算和符号,并且应该很容易记住。另外,在讨论比较运算符时,您可以使用相同的名称。所以,你会读到
std::cout << "Hello, world!" << std::endl;
作为
S T D结肠C出口少了双引号Hello逗号世界感叹号双引号少S T D结肠结肠L分号。
此外,
#include <iostream>
作为
英镑包括更少的I O流更大
所以,回答
“教授,我不记得如何制作插入操作符;请告诉我要键入的符号。”
是“少一点。”
我应该同时教授更常用的名称“左/右尖括号”来教授更常见的名字,但是“更少/更大”可以很好地提醒我实际的符号是什么。
Chevron也是一个简洁的名字,但在我看来有点模糊,更不用说公司的关系了。
答案 1 :(得分:0)
我的评论错了(Chrome的PDF阅读器有一个错误的“在文件中查找”功能,但最初没有给我所有结果。)
关于OP关于运算符名称的具体问题,无论上下文 - 都没有答案,因为ISO C ++规范没有将使用上下文之外的运算符命名(例如+
运算符被命名为“addition”,但仅限于数字类型,例如,在调用执行字符串连接时,它不会被命名为。也就是说,ISO C ++标准没有给操作员令牌一个特定的名称。
关于Shift运算符(5.8)的部分仅为整数/枚举类型定义和命名它们,而重载运算符部分没有赋予它们名称。
我自己,如果我正在教授C ++并解释<<
/ >>
运算符,我会说“双角度括号运算符用于表示整数类型的位移,以及插入/提取流和字符串“。或者,如果我是简洁的话,我会重写这个词,并简单地说“bitshift运算符因流而过载意味着完全不同的东西”。
关于在流和字符串的上下文中关于<<
/ >>
运算符的名称的次要问题(在注释线程中),C ++ 14 ISO规范(最终工作 - 草稿:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf) 将它们称为“提取器和插入器”:
21.4.8.9插入器和提取器template<class charT, class traits, class Allocator> basic_istream<charT,traits>& operator>>( basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str );
(其余的>>
运算符重载定义如下)
这进一步扩展到2.7.2.2.2:
27.7.2.2.2算术提取器operator>>(unsigned short& val); operator>>(unsigned int& val); operator>>(long& val);
(依此类推......)
答案 2 :(得分:-1)
建议:将插入/提取操作符的外观与Guillemet符号类似,我们可能会查看这些符号的Unicode描述。在那里它们被描述为“左指双角引号”和“右指双角引号”(link)。
所以也许我们可以调用符号“双左角”和“双角度”。
答案 3 :(得分:-1)
cout << "string" << endl;// I really just say "send string to see out. Add end line."
i++; // i plus plus
auto x = class.func() // auto x equal class dot func
10 - ( i %4) * x; // ten minus the quantity i mod four times x
stdout // stud-out
stderr // stud-err
argc // arg see
argv // arg vee
char* // char pointer
&f // address of f
答案 4 :(得分:-2)