你怎么读“<<”和“>>”大声的符号?

时间:2017-03-13 23:47:30

标签: symbols

我想知道是否有一种标准的方式,如果我们大声发出印刷符号来阅读<<>>符号?在教授初次使用C ++的学生并讨论/确定需要在特定地方写出的符号时,这就出现了。

最佳答案不应该是“按位移位”或“插入”等名称,因为那些引用更具体的C ++运算符,而不是无上下文符号本身(这是什么我们想要这里)。从这个意义上说,这个问题 thisthis等问题相同,其答案都不能满足这个问题。

一些比较例子:

  • 我们可以将#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";?在课堂上的当前时间,我们将这些符号称为“左箭头”和“右箭头”,但如果有更传统的措辞,我宁愿使用它。

陈述这个问题的其他等效方式:

  • 我们如何排版阅读<<
  • 符号<<常规名称是什么,无论是用于换位,插入还是重载都是全新的?
  • 如果一个学生说,“教授,我不记得如何制作插入操作员;请告诉我要输入的符号”,那么最好的口头反应是什么?
  • 填写此类比的最佳方法是什么? “对于乘法运算,我们使用星号;对于除法运算,我们使用正斜杠;对于插入操作,我们使用____。”

5 个答案:

答案 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)

  1. 仅仅因为它是一个&#34;提取&#34;或者插入&#34;运营商并不意味着这就是运营。
  2. 操作是&#34;输入&#34;和&#34;输出&#34;
  3. 他们是流媒体运营商。
  4. 自然标签将是c-out流输出双引号Hello world感叹号双引号流输出结束
  5. 这是您正在进行的操作(动词)
  6. ARM称之为运营商的是无关紧要的,因为它是一种看待事物的系统方式,我们正试图帮助人类理解事物