幻数42的起源是什么,编码中不可或缺?

时间:2013-04-26 12:13:28

标签: language-agnostic coding-style

更新
感到惊讶的是,它被大量投票......

问题是与编码相关,在提出这个问题之前,我已经搜索了“42”并结合:

  • site:msdn.micrsoft.com
  • “code example”
  • “c#”
  • “幻数”

我不是西方文化/文学的专家/粉丝。

还发现,Why are variables “i” and “j” used for counters? [duplicate]没有关闭,甚至受到保护。


我觉得每个人都知道,除了我......

在整个代码样本和样本中使用的无处不在的魔术数字42的起源是什么?

你是如何使用42的?因为我没有来过或曾经使用 42

经过一番搜索,我发现了MSDN文档:Magic Numbers: Integers

  • “除了书籍/电影参考资料,开发人员经常将此作为任意值使用”

嗯,这并没有解释我的任何事情。

我参与开发,编码和编程以及周围的IT相关活动(如rwquirements分析,系统管理等),我错过了哪些电影和书籍?

使用带有42的代码片段(仅与C#相关)对某些文本的一些引用:

JérômeLaban。 C# Async Tips and Tricks, Part 3: Tasks and the Synchronization Context

  var t = Task.Delay(TimeSpan.FromSeconds(1))
              .ContinueWith
                (
                    _ => Task.Delay(TimeSpan.FromSeconds(42))
                );

MSDN Asynchronous Agents Library

   send(_target, 42);  

Quickstart: Calling asynchronous APIs in C# or Visual Basic

  Office.context.document.setSelectedDataAsync(
      "<html><body>hello world</body></html>",
       {coercionType: "html", asyncContext: 42},
       function(asyncResult) {
           write(asyncResult.status + " " + asyncResult.asyncContext);

Asynchronous Programming in C++ Using PPL

  task<int> myTask = someOtherTask.then([]() { return 42; });

Boxing and Unboxing (C# Programming Guide)

  Console.WriteLine(String.Concat("Answer", 42, true));

How To: Override the ToString Method (C# Programming Guide)

  int x = 42;

Trace Listeners

  // Use this example when debugging.
  System.Diagnostics.Debug.WriteLine("Error in Widget 42");
  // Use this example when tracing.
  System.Diagnostics.Trace.WriteLine("Error in Widget 42");

|| Operator (C# Reference

  // The following line displays True, because 42 is evenly  
  // divisible by 7.
  Console.WriteLine("Divisible returns {0}.", Divisible(42, 7));

  // The following line displays False, because 42 is not evenly 
  // divisible by 5.
  Console.WriteLine("Divisible returns {0}.", Divisible(42, 5));

  // The following line displays False when method Divisible  
  // uses ||, because you cannot divide by 0. 
  // If method Divisible uses | instead of ||, this line 
  // causes an exception.
  Console.WriteLine("Divisible returns {0}.", Divisible(42, 0));

WIKIPedia C Sharp (programming language)

  int foo = 42;         // Value type.

6 个答案:

答案 0 :(得分:24)

来自The Hitch Hiker's Guide to the Galaxy

  

在“银河系漫游指南”(1979年出版)中   人物参观传说中的行星Magrathea,回家   现在倒塌的行星建筑行业,并遇见了Slartibartfast,a   负责峡湾的行星海岸线设计师   挪威。通过档案录音,他讲述了一场比赛的故事   建立一台名为的计算机的超智能泛维生物   深刻思考计算生命终极问题的答案,   宇宙,一切。当答案显示为42时,   Deep Thought解释说答案是不可理解的,因为   众生不知道他们在问什么。它继续预测   另一台计算机,比它本身更强大   由它设计来计算答案的问题。 (稍后的,   参考这一点,亚当斯将创建42拼图,这是一个难题   可以通过多种方式接近,所有人都得出答案42。)

答案 1 :(得分:14)

正如人们已经说过的那样,答案是The Hitchhiker's Guide to the Galaxy

我做了一个小实验并在搜索字段中添加了几个数字,结果如下:

enter image description here

似乎42明显地击败了它的邻居,但它不能触及40,45和50等常规数字,无论它多么神奇。

仅在源代码中进行相同的搜索会很有趣。

答案 2 :(得分:8)

多德!

这是生命,宇宙和一切的终极问题的答案!由Deep Thought超级计算机计算,耗时750万年!

http://en.wikipedia.org/wiki/The_answer_to_life_the_universe_and_everything#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe_and_Everything_.2842.29

答案 3 :(得分:6)

检查this。 42是ultimate answer to the ultimate question of life the universe and everything

答案 4 :(得分:4)

这是来自 The Hitch徒步旅行者银河指南并且是:

  

对生命,宇宙和一切的终极问题的回答

WikiLink

答案 5 :(得分:4)