말도 안되는 런타임 오류


40

미쳤거나, 모호하거나, 말도 안되거나, 단순하게 실행 가능한 런타임 오류를 생성하는 프로그램을 작성하십시오. 난독 화 및 골프 경도 (단축)가 필요하지 않습니다.

  • 제대로 작동하는 것처럼 보이는 솔루션이 더 좋습니다.
  • 한 가지 방법은 깨뜨려야하지만 다른 방법은 깨뜨릴 수있는 솔루션이 더 좋습니다.
  • 결정적이지 않은 솔루션은 때때로 재현 할 수있는 한 더 좋습니다.
  • 오류 원인과 증상 사이의 거리가 긴 솔루션이 더 좋습니다.
  • 불가능한 오류를 생성하기위한 보너스 포인트.
  • (파이썬 세그먼트 오류 발생과 같은) 런타임과 충돌하는 오류 또는 운영 체제에 대한 보너스 포인트.

점수 단위는 공감해야한다.

부록 1

컴파일러 오작동도 괜찮습니다.


2
파이썬 segfault를 만드는 것은 쉽다 :import sys; sys.setrecursionlimit(~-2**31); x=lambda x:x(x); x(x);
marinus

피터 : 멍청 아. 나는 질문을 반쯤 쓰면서 그
목적을 바꾸었다

... 말 볼지 또는 INTERCAL은 어떻습니까? 나는 그들이 꽤 미친 오류가있을 것이라고 확신합니다. 아마도 단일 문자로 할 수 있습니다.
acolyte

1
이것은 확실히 해결책으로 가기에 가장 좋은 링크입니다 : destroyallsoftware.com/talks/wat :-)
seri

답변:


69

(의무 PHP 하나 여전히 5.4으로 고정되지 않은) :

<?::

출력 :

구문 분석 오류 : 구문 오류, 1 행의 예기치 않은 T_PAAMAYIM_NEKUDOTAYIM

와?


12
나는 이것을 좋아한다. 내가 가장 좋아하는 오류 메시지 일 수 있습니다. 한때를 제외하고 친구는 Windows 노트북을 복구 파티션으로 부팅하려고 시도했지만 전체 화면을 흰색 상자로 바꾸어 큰 빨간 글자 철자 "ERROR"를 표시했습니다.
Wug

4
그럼에도 불구하고 고의적이지만 기이 한 일 : "Paamayim Nekudotayim은 처음에는 이중 콜론을 명명하기위한 이상한 선택처럼 보이지만 Zend Engine 0.5 (PHP 3에 영향을 미침)를 작성하는 동안 Zend 팀은이를 결정했습니다. "이것은 실제로 이중 콜론을 의미합니다-히브리어로!" php.net/manual/en/language.oop5.paamayim-nekudotayim.php
Jon Gauthier

12
@HansEngel : 그렇습니다. 히브리어로 된 이중 콜론을 의미합니다. 이 토큰을 제외한 모든 토큰에 영어를 사용하는 것이 의미가 있습니다 ...? PHP 팀에 문의해야 할 것 같습니다.
Ry-

죄송합니다,하지만 당신은 단순히 ''클래스 ''(빈 문자열) 에서 정적 메소드 / 변수 (빈 문자열)를 호출합니다
Ismael Miguel

1
@IsmaelMiguel : 잘못된 것이 아니라 히브리어로 인해 혼란 스럽습니다.
Ry-

61

GCC 컴파일 오류 :

int main()
{
        long long long a;
}

오류 : GCC에 대한 long long long이 너무 깁니다


6
그들은 그냥 누군가가 노력할 것입니다 알고 long long long, 경우 longlong long모두 유효합니다.
Konrad Borowski

3
"너무 길다!" 더 나은 오류 메시지 였지만 여전히 좋은 대답입니다.
Wug

52

Windows 명령 프롬프트

If you're happy and you know it clap your hands!

산출:

현재로서는 행복하지 못했습니다.


1
결과를 확인하기 위해 해당 명령을 시도했지만 ^V다음과 같이 표시되었습니다. (어려운 일
Fabricio

8
@ Fabricio, CTRL + V를 눌러 줄을 붙여 넣은 것입니까? 명령 프롬프트에서 붙여 넣기를위한 키보드 "바로 가기"는 ALT + SPACE, E, P입니다.
Hand-E-Food

42

PHP

$ cat error.php 
<?php
function echo_string(string $string) {
    echo $string;
}
echo_string("Hello, world!");
$ php error.php 
PHP Catchable fatal error:  Argument 1 passed to echo_string() must be an instance of string, string given, called in error.php on line 5 and defined in error.php on line 2

문자열을 함수에 전달할 수 없으며 대신 문자열을 전달해야합니다!

업데이트 : 이 코드는 PHP 7에서 오류가 아닙니다. 스포일러를 가리 키거나 클릭 / 터치하여 이유를 확인하십시오 (코드 작동 방식에 대한 스포일러 포함).

스칼라 형식 선언 이라고하는 새로운 기능 이 PHP 7에 추가되었습니다.이 기능은 함수 선언에 스칼라 형식을 사용할 수 있습니다.


6
무슨 F *** PHP.
Wug

7
PHP가 클래스를 얻으려고합니다 string(유효합니다). 타입 힌트 (당신이하고있는 일)는 수업에서만 작동합니다. 클래스 string가 존재하지 않으므로 오류가 발생합니다.
Ismael Miguel

귀하의 코드가 제대로 작동하는지 확인할 수 있습니다 : sandbox.onlinephpfunctions.com/code/…
Ismael Miguel

2
@IsmaelMiguel : 예, 왜 그런지 이해하지만 오류는 여전히 우스운 생각입니다.
Konrad Borowski

1
그런 다음 시도하십시오 array(''=>array()'').
Ismael Miguel

33

세게 때리다

$ echo "Hello, world!"
bash: !": event not found

그리고 당신은 배쉬가 간단한 "Hello, world!"를 받아 들일 것이라고 생각할 것이다. 프로그램.


이것에 대한 설명 : bash의 프로그램에 대한 인수로 큰 따옴표로 전달 된 문자열이 확장되어 큰 따옴표로 묶인 문자열 내부로 `echo hi`바뀝니다 hi. 이벤트 지정자! 의 접두사로 사용됩니다 . 따라서 bash는을 평가하려고 하지만 참조 된 이벤트를 찾을 수 없습니다. !"
Mego

31

파이썬 2.7

# Look I'm actually coding: see my happy face?
print ':)'

다소 도움이되지 않는 내용을 생성합니다.

SyntaxError: encoding problem: with BOM

간단한 주석은 어떻게 오류를 생성 할 수 있습니까?


12
최신 파이썬 인터프리터 : 처음 두 줄로 시작하고 인코딩 설명으로 사용되는 다음 단어를 #포함 coding:하는 경우
AMK

31

매스 매 티카

Mathematica를 사용하여 그래픽 출력을 작성할 때 프로그램 자체에서 사용중인 스펙에 따라 형식화 된 오류 메시지가 트리거되는 경우가 있습니다. 다음은 간단한 예입니다.

Rotate[f/0, .6]

여기에 이미지 설명을 입력하십시오


11
그것은 실제로 오류 메시지가 아닙니다. 그것은 단지 티카 반환 값 이 0으로 뭔가를 나눌 때.
Ilmari Karonen

26

TI-89 그래프 계산기

고등학교 미적분학에서 암시 적 차별화에 대해 배울 때 이것을 발견했습니다. 입력 한 경우 :

d(xy+x=0,x)

당신은 다음을 얻습니다 :

1 = 0

이 경고로 화면 하단에 작은 글자로 인쇄됩니다.

Warning: May produce false equation

이것은로 xy해석되지 x * y않고 자체 기호로 해석 되기 때문에 발생합니다 xy.

당신이 경우에 이상하게도 d(xy=0,x), 당신은 얻을 0 = 0같은 경고.


22

Haskell 컴파일러의 두뇌를 폭발적으로 만들 수 있습니다 :

C:\Windows\system32>ghci
...
Prelude> :set -XExistentialQuantification
Prelude> data Foo = forall a. Foo a
Prelude> let foo f = 1 where Foo a = f

<interactive>:4:21:
    My brain just exploded
    I can't handle pattern bindings for existential or GADT data constructors.
    Instead, use a case-expression, or do-notation, to unpack the constructor.
    In the pattern: Foo a
    In a pattern binding: Foo a = f
    In an equation for `foo':
        foo f
          = 1
          where
              Foo a = f
Prelude>

22

루비

규칙 남용.

class StandardError

  def to_s
    words = File.open('/usr/share/dict/words'){|f|f.readlines.map &:chop}.sample(100)
    words.last.capitalize!
    super.gsub(/\w+/){words.pop}
  end

  to_s(3)

end

OSX에서 실행하는 경우

$ ruby weird_runtime_error.rb 
weird_runtime_error.rb:9:in `to_s': Sculpturation contingence explicate tappet(phonendoscope ethopoeia nannandrous) (ArgumentError)
    from weird_runtime_error.rb:9:in `<class:StandardError>'
    from weird_runtime_error.rb:1:in `<main>'

6
지구상에서 무슨 의미입니까?
TRiG

9
의미 wrong number of arguments(1 for 0)합니다. 그것은 언어 적 타당성을 거의 고려하지 않고 영어 어휘를 사용하여 게으르고 확률 적으로 생성되는 언어를 통해 표현되고 있습니다.
histocrat

21

DOS 프롬프트

c:\>make love

너에게 준다

Fatal Error: 'love' does not exist. Don't know how to make it.

비협조적인 이유로 내 컴퓨터를 모욕하려고하던 중이 문제에 걸려 넘어졌습니다. 내가 알 때까지 잠시 동안 나를 슬프게 만들었습니다. 사랑이 존재하지 않는 경우에만 발생합니다. 그것이 존재한다면 그는 기꺼이 그것을 만들 것입니다.


5
이것은 실제로 makeDOS 자체가 아닌 유틸리티 전용 입니다.
Vovanium

1
내가 얻을 :make: *** No rule to make target 'love'. Stop.
agtoever

@agtoever 잘못된 make를 실행하고 있습니다.
Navin

나는 얻는다 : make: Fatal error: Don't know how to make target 'love'그러나 그것은 유닉스에있다. DOS에서는을 얻습니다 make is not recognized as an internal or external command, operable program or batch file.
lebatsnok

17

배쉬 (Quine error)

이 오류는 Bash의 Quine입니다!

$ bash: bash:: command not found...
bash: bash:: command not found...

물론 당신은 관련성이 있어야합니다 locale(영어).


1
...끝에는 인쇄하지 않았 으므로 원래 입력에서도 생략해야했습니다.
Zev Eisenberg 2016 년

16

CSH

정말 고전적인 csh농담 :

% make fire?
make: No match.

15

배쉬- 드문 역사적 오류 메시지 의 정확한 재현

echo -ne $(tail -n +257 /usr/src/linux*/drivers/char/lp.c | head -1 | cut -d '"' -f 2 | sed 's/%d/0/')

산출:

lp0 on fire

리눅스 커널 소스를 평소에 풀어야합니다.

재미있는 사실 : 오래된 리본 프린터를 실행할 때이 메시지를 본격적으로 받았습니다.


오류 메시지입니까, 아니면 프로그램의 출력입니까?
yo

1
@yo '는 bash one-liner 자체가 성공적으로 반환하지만 출력은 실제 오류 메시지입니다. 스크립트는 단순히 프린터 드라이버 소스에서 오류를 가져옵니다.
Riot

아 좋아, 그것은 까다로운 일이다 :-)
yo '

1
또한 오류는 용지 걸림이 계속 발생하여 화재의 위험이 있음을 의미합니다.
여호수아

13

C (++)

컴파일 타임 오류가 발생하면 여기에 "crash.c"라는 파일이 있다고 가정합니다.

#include "crash.c"

int main(){ return 0; }

컴파일시 화면을 채 웁니다 (Ctrl-C 준비 완료)

                 from crash.c:1,
                 from crash.c:1:
crash.c:3:1: error: redefinition of ‘main’
crash.c:3:1: note: previous definition of ‘main’ was here
In file included from crash.c:1:0,
                 from crash.c:1,
                 from crash.c:1,

완벽하게 잘 컴파일되는 또 다른 스 니펫 (아래 경고는없고 -WallC의 아름다운 유형 안전성을 보여줍니다. </ s>

#include <stdio.h>
int i;

int main(){
  sprintf(NULL, "%s", (char *) (void *) (1/i));
  return 0;
}

그것을 실행하면 :

Floating point exception (core dumped)

13

루비

이것이 고급 언어로 일어날 수있는 것이 이상하다고 생각하십시오.

$*<<$*<<$**$/

생산

ArgumentError: recursive array join

10

이것은 매우 오래되었지만 BCPL을 기억하는 사람들에게는

GET "LIBHDR"

LET START() = VALOF 
$8
        RESULTIS 0
$)

불평하다

$8
 ^
"( ) or 8 expected"

10

아르 자형

이것은 기술적으로 오류가 아니라 경고이지만 그럼에도 불구하고 말도 안되며 완전히 난해한 이유로 발생합니다.

[[편집]] 재미있는 경고의 일부 부분의 원인은 R 자체가 아니라 RStudio에있는 것 같아서 처음 생각했던 것보다 덜 흥미 롭습니다. 그러나 첫 번째 예 plot(1:2, NotAGraphicalParameter = "ignore.me")는 여전히 "네이 키드"R에서 재현 할 수 있으며 그 자체로는 충분히 재미 있습니다. [[/ EDIT]]

> plot(1:2, NotAGraphicalParameter = "ignore.me")
# produces a nice scatterplot with two points, [1,1] and [2,2]
Warning messages:
1: In plot.window(...) :
  "NotAGraphicalParameter" is not a graphical parameter
2: In plot.xy(xy, type, ...) :
  "NotAGraphicalParameter" is not a graphical parameter
3: In axis(side = side, at = at, labels = labels, ...) :
  "NotAGraphicalParameter" is not a graphical parameter
4: In axis(side = side, at = at, labels = labels, ...) :
  "NotAGraphicalParameter" is not a graphical parameter
5: In box(...) : "NotAGraphicalParameter" is not a graphical parameter
6: In title(...) : "NotAGraphicalParameter" is not a graphical parameter
> plot(2:3)
# another nice scatterplot: [2,2] and [3,3] 
# but there should be nothing wrong this time!
# however ...
There were 12 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: "NotAGraphicalParameter" is not a graphical parameter
2: "NotAGraphicalParameter" is not a graphical parameter
3: "NotAGraphicalParameter" is not a graphical parameter
4: "NotAGraphicalParameter" is not a graphical parameter
5: "NotAGraphicalParameter" is not a graphical parameter
6: "NotAGraphicalParameter" is not a graphical parameter
7: "NotAGraphicalParameter" is not a graphical parameter
8: "NotAGraphicalParameter" is not a graphical parameter
9: "NotAGraphicalParameter" is not a graphical parameter
10: "NotAGraphicalParameter" is not a graphical parameter
11: "NotAGraphicalParameter" is not a graphical parameter
12: "NotAGraphicalParameter" is not a graphical parameter
# but let's try once more:
> plot(2:3)
# yup. no warnings this time. we had to do it twice

R이 우리의 모욕을 기억하는 것과 같습니다. 그러나 오랫동안은 아닙니다.

왜 이런 일이 일어나는지 설명 할 수는 없지만 재현 가능합니다. 실제로는 "그래픽 매개 변수가 아닌"일부를 플롯 1에 제공 한 다음 플롯 2를 완벽하게 수행 할 때마다 발생합니다. 두 번째 줄거리에 대해 12 개의 "그래픽 매개 변수가 아니라"경고가 표시되고 첫 번째 줄에 대해서는 6 개의 경고 만받는 것이 특히 재밌습니다. 또 다른 재미있는 점은 값이 NULL 인 "그래픽 매개 변수가 아닌"값을 제공하면 조건이 발생하지 않는다는 것입니다.

plot(1:2, Nonsense=NULL)
# no warnings
# however
plot(1:2, Nonsense="gibberish")
# gives the usual 6-pack of warnings

그리고 더 우스꽝스럽게 만들려면 이전에 그린 플롯 위에 몇 개의 선을 그려 보겠습니다.

plot(1:2)
# you will see the number of warnings growing with each line:
lines(1:2, 1:2, mumbo = 1)
lines(1:2, 1:2, jumbo = 2)
lines(1:2, 1:2, bimbo = 3)
lines(1:2, 1:2, cucaracha = 4)
lines(1:2, 1:2, karaoke = 5)
lines(1:2, 1:2, radiogaga = 6)
lines(1:2, 1:2, reptiles = 7)
lines(1:2, 1:2, cowsonmoon = 8)
lines(1:2, 1:2, stainlessSteelLadderToTheMoon = 9)
lines(1:2, 1:2, frambuesa = 10)
lines(1:2, 1:2, fresa = 11)
lines(1:2, 1:2, limonYNada = 12)
lines(1:2, 1:2, slingsAndArrows = 13)
# ... and now you have 25 warnings:
warnings()

Warning messages:
1: "mumbo" is not a graphical parameter
2: "jumbo" is not a graphical parameter
3: "bimbo" is not a graphical parameter
4: "cucaracha" is not a graphical parameter
5: "karaoke" is not a graphical parameter
6: "radiogaga" is not a graphical parameter
7: "reptiles" is not a graphical parameter
8: "cowsonmoon" is not a graphical parameter
9: "stainlessSteelLadderToTheMoon" is not a graphical parameter
10: "frambuesa" is not a graphical parameter
11: "fresa" is not a graphical parameter
12: "limonYNada" is not a graphical parameter
13: "mumbo" is not a graphical parameter
14: "jumbo" is not a graphical parameter
15: "bimbo" is not a graphical parameter
16: "cucaracha" is not a graphical parameter
17: "karaoke" is not a graphical parameter
18: "radiogaga" is not a graphical parameter
19: "reptiles" is not a graphical parameter
20: "cowsonmoon" is not a graphical parameter
21: "stainlessSteelLadderToTheMoon" is not a graphical parameter
22: "frambuesa" is not a graphical parameter
23: "fresa" is not a graphical parameter
24: "limonYNada" is not a graphical parameter
25: In plot.xy(xy.coords(x, y), type = type, ...) :
  "slingsAndArrows" is not a graphical parameter

이것은 아니 정의가없는 한 큰 시간을 승리하십시오.


1
어떤 버전의 R을 사용하고 있습니까? plot(2:3)을 사용한 직후에 발생하는 경고 팩을 재현 할 수 없기 때문 plot(1:2, NotAGraphicalParameter = "ignore.me")입니다. 당신이 뭔가를 재정의 .Rprofile했습니까?
plannapus

1
이것은 Rstudio (Windows 및 Ubuntu 모두)에서 R을 실행하는 것과 관련이 있지만 Linux 터미널 또는 Windows Rgui에서 R을 실행할 때 발생하지 않습니다.
lebatsnok

Rstudio가없는 모델링 기능 (lm 또는 glm)과 비슷한 것을 보았지만 지금은 재현 할 수 없습니다. (즉, 더 이상 관련이 없을 때 이전 경고가 표시되었습니다.)
lebatsnok

9

Windows 명령 스크립트

경고, 이것은 포크 폭탄입니다!

어떤 식 으로든 콘솔을 종료하려고하면 종료에 관한 쓰레기 질문이 출력됩니다.

%0|%0|%0

보너스 :

  • 다시 시작할 때까지 시스템을 거의 사용할 수 없게 만듭니다
  • 불가능한 스크립트 종료 방지

2
위험 윌 로빈슨?
Jacob

7

q는 너를 모욕한다

q)`u#1 1
'u-fail
q)

```u #``는 q목록의 모든 요소가 고유하다는 것을 알려줍니다. 따라서 아마도 일종의 해시 기반 인덱스를 만들 수 있습니다. 이것이 사실이 아닌 경우에 발생합니다.


1
언어는 무엇입니까? "q insults you"언어를 검색하려고했지만 아무것도 찾지 못했습니다.
Konrad Borowski

의도하지 않은 암호로 죄송합니다. 언어는 [q] ( en.m.wikipedia.org/wiki/… 입니다. 또한 k4, BTW에서도 작동합니다.
Aaron Davies

6

컴파일러 최적화 오류는 어떻습니까?

#include <stdio.h>

#define N 4

int main(void)
{
    int sum;
    int i;
    int arr[N];

    for (i = 0, sum = 0; i < N; i++, arr[i] = sum) {
        sum += arr[i];
    }
    printf("%d\n", sum);
    return 0;
}

이것은 gcc> = 4.7에만 해당됩니다. 로 컴파일하고 잘 실행합니다 gcc -O0 -Wall. gcc -O2 -Wallinf-loop로 컴파일 하지만 결과는 루프입니다.

또한 GCC는 작은에 대한 문제를 참조 않는 방법,주의 N, 예를 N = 3:

test.c:11:38: warning: array subscript is above array bounds [-Warray-bounds]
  for (i = 0, sum = 0; i < N; i++, arr[i] = sum) {
                                       ^
test.c:12:13: warning: 'arr[0]' is used uninitialized in this function [-Wuninitialized]
  sum += arr[i];
         ^

Btw, 이것은 버그 보고서에서 가져온 것이지만 버그 번호를 기억할 수는 없습니다.


3
글쎄, 이것은 정의되지 않은 동작이므로 컴파일러는 무엇이든 할 수 있습니다. 그러나 C 표준에서 허용하는 경우에도 컴파일러가 사용되지 않은 로컬 배열 외부에서 할당을 변경하고 선언되지 않은 값을 무한 루프로 사용하기로 결정한 것은 여전히 ​​이상하다고 느낍니다 (결국 정의되지 않은 동작- 액세스 arr[N](배열 외부) 및 액세스 arr[0](초기화되지 않음). 정의되지 않은 동작에 대해 허용되는 것은 최적화 오류가 아니라 사용자가 원하는 것이 아닐 가능성이 높습니다.
Konrad Borowski

4
이것은 명시 적으로 컴파일러 최적화 오류가 아닙니다. UB는 UB이며, 하드 드라이브에서 모든 데이터를 제거하기로 결정한 경우에도 컴파일러가 적합합니다.
H2CO3

5

나는 항상 APL 에서이 이상한 점을 좋아했습니다.

      syntax 분명히 구문 오류
      { (] } 삼  
신택스 오류
      {(]}삼

      ⍝ 그러나 :
      {(]} 1 ÷ 0
도메인 오류
      {(]} 1 ÷ 0 

      static 정적으로 정의 된 함수에서도 작동합니다.
      ∇z ← fx
[1] z ← [{]} x
[2] ∇
      f 1 ÷ 0
도메인 오류
      f 1 ÷ 0
     ∧
      f 3
신택스 오류
f [1] z ← [{]} x     

함수 내부를 느리게 파싱합니다!


4

PHP

<?php
[][] = 42;

[]요소를 푸시하기 위해 사용됩니다. 그러나 배열 리터럴에 사용하면 PHP는 푸시하기 위해 할당하더라도 미친 오류 메시지를 표시합니다. 배열 리터럴을 색인 할 수 없었기 전에 PHP> = 5.4가 필요합니다.

산출:

치명적인 오류 : 2 행의 [...] [...] 에서 읽을 때 []를 사용할 수 없습니다.


4

파이썬

중첩 된 블록

for a in range(26):
 for b in range(26):
  for c in range(26):
   for d in range(26):
    for e in range(26):
     for f in range(26):
      for g in range(26):
       for h in range(26):
        for i in range(26):
         for j in range(26):
          for k in range(26):
           for l in range(26):
            for m in range(26):
             for n in range(26):
              for o in range(26):
               for p in range(26):
                for q in range(26):
                 for r in range(26):
                  for s in range(26):
                   for t in range(26):
                    for u in range(26):
                     for v in range(26):
                      for w in range(26):
                       for x in range(26):
                        for y in range(26):
                         for z in range(26):
                          print a

파이썬 2.7 : SystemError: too many statically nested blocks

자기 참조 목록

def printList(myList):
    for element in myList:
        if isinstance(element, list):
            printList(myList)
        else:
            print(element)

a = []
a.append(a)
printList(a)

파이썬 2.7

참은 상수가 아니다

다음 예제 문제는 파이썬 2.7에 있다는 것입니다 TrueFalse상수 수 없습니다. 그리고 TrueFalse자동에 주조 얻을 수 있습니다 10:

True=False
a=10/True

Traceback (most recent call last):
  File "/home/moose/.config/pluma/tools/new-tool-2", line 11, in <module>
    exec(sys.stdin.read())
  File "<string>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero

파이썬 2.7 :

강화

def f(n):
    if n <= 1:
        return n
    else:
        return f(n-1)+f(n-2)

오류가 있습니까?

Traceback (most recent call last):
  File "/home/moose/.config/pluma/tools/new-tool-2", line 11, in <module>
    exec(sys.stdin.read())
  File "<string>", line 4
    else:
       ^
SyntaxError: invalid syntax

파이썬 2.7에서는 탭과 공백을 섞는 것이 좋았습니다 ...하지만 들여 쓰기 수준을 염두에 두십시오!


1
Stack Exchange 플랫폼에서는 코드에서 표 작성기를 사용할 수 없으므로 혼합 공간 및 표 작성기 예제가 올바르게 작동하지 않습니다.
Konrad Borowski

@ xfix : 좋아,하지만 이것을 읽는 사람들이 요점을 얻는다고 생각합니다. 대부분의 편집자는 공백 / 탭을 표시하지 않으며 (공백 공백 제외) 표시하면 대부분 회색입니다. 그리고 다른 모든 언어 (공백 제외)에서 공백은 적어도 하나가있는 한 중요하지 않습니다.
Martin Thoma

공백 프로그래밍 언어로 프로그램을 작성해야합니다.
Alexander

파이썬 3은 장난입니까?
Ry-

@ minitech 나는 모른다. 그것이와 관련이 print a있습니다.
Justin

3

시작하겠습니다 :

#include <iostream>

using namespace std;

class A
{
public:
    A()
    {
    }

    void doSomethingDiabolical()
    {
        delete this;
    }

    virtual void breakHorribly()
    {
        cout << "still alive" << endl;
        doSomethingDiabolical();
        cout << "still alive" << endl;
    }
};

class B : public A
{
public:
    B() : A()
    {
    }

    void breakHorribly()
    {
        cout << "still alive" << endl;
        ((A *) this)->breakHorribly();
        cout << "still alive" << endl;
        doSomethingDiabolical();
        cout << "still alive" << endl;
        breakHorribly();
        cout << "dead" << endl;
    }
};

int main()
{
    jane();
}

void jane()
{
    cout << "still alive" << endl;
    A * o = new B;
    cout << "still alive" << endl;
    o->breakHorribly();
}

이 프로그램이 왜 충돌하는지 추측하십니까? :디

다음을 참조하십시오 jane: http://ideone.com/gtaZ3


1
이것은 다소 간단한 무한 재귀가 아닌가? B::BreakHorribly호출되기 전에 호출되기 doSomethingDiabolical때문에 delete this도달하지 않습니다.
marinus

이 프로그램은 여러 가지 이유로 폭발합니다. 다른 인쇄 설명을 제거하면 동작이 변경됩니다. 그러나 당신이 맞습니다. 한 번 정의되지 않은 동작을 재현 할 시간이 없었지만 런타임에 순수한 가상 함수 호출을 얻었습니다.
Wug

2
당신은 당신이 한 번 실수로 뭔가를 입력하고 있다고 말하는 것이 아닙니다 delete this.
반 시계 회전을 중단

아니, 그것은 훨씬 더 미묘한보다했지만, 최종 결과는 동일 : 소멸자는 멤버 함수의 실행 중에 클래스를 요구했다
WUG

3

세게 때리다

오늘 시스템을 보호 할 수 있는지 알아 내려고했을 때이 정보를 얻었습니다 rm -rf /.

mkdir /tmp/a
mkdir /tmp/a/b
sudo mount --bind /tmp/a /tmp/a/b
rm -rf /tmp/a

오류 메시지 LANG=C:

rm: WARNING: Circular directory structure.
This almost certainly means that you have a corrupted file system.
NOTIFY YOUR SYSTEM MANAGER.
The following directory is part of the cycle:
  '/tmp/a/b'

이 경고는 rm아닙니다 bash. 언어 bash를 설정할 때 제목에 어떤 언어를 선언해야하는지 잘 모르겠습니다 .

2

아르 자형

또 다른 것은 우스운 것이 아니라 오류가 아니라 경고이지만 여전히 훌륭합니다.

> sapply(as.list(-1:-51), log)
 [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[20] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[39] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
There were 50 or more warnings (use warnings() to see the first 50)

나는 마지막 비트를 좋아한다 : 50 이상 :)

그리고 실제 경고 :

1: In lapply(X = X, FUN = FUN, ...) : NaNs produced
2: In lapply(X = X, FUN = FUN, ...) : NaNs produced
....
50: In lapply(X = X, FUN = FUN, ...) : NaNs produced

재미 = 재미!


1
냥 코드?! 글쎄, 그것은 정말로 이상하다!
Kroltan

예상치 못한 또는 놀라운 것이 보이지 않습니다. 음수 생성 NaN (Not A Number)의 로그.
plannapus

2

CPython

import ctypes
import sys
(ctypes.c_char * sys.getsizeof(None)).from_address(id(None))[:4] = '\x00' * 4

결과:

Fatal Python error: deallocating None

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

파이썬 3에서 더 좋습니다 : ctypes.pythonapi._Py_Dealloc(ctypes.py_object(None)).
kirbyfan64sos

2

배쉬-직관적이지 않은 탈출 실패

echo "this should definitely work!!!11!"

보고

-bash: !11: event not found

(명령 행의 히스토리 확장은 큰 따옴표로 막을 수 없습니다)

보너스:

echo "I don't know what's gone wrong!! !echo is usually pretty foolproof!-1"

결과가 예상과 다를 수 있습니다. 눌러 까지 명령을 다시 얻기 위해, 예고는 당신이 입력 한 내용에서 변경된. 위로 두 번 누르고 입력하면 출력이 다소 끔찍하게 보일 수 있습니다. 직접 해보십시오.


2
이 답변은 codegolf.stackexchange.com/a/17776 의 복제본입니다 .
Dennis

2

재귀, 게으른 피보나치 생성기

static void Main()
{
    Console.WriteLine(string.Join(",", fib().Take(141)));
    Console.ReadLine();
}

static IEnumerable<decimal> fib(decimal n = 0, decimal m = 1)
{
    if (n == 0)
    {
        yield return 0;
        yield return 1;
    }
    while (true)
    {
        yield return n + m;
        foreach(var x in fib(m, n+m))
        {
            yield return x;
        }
    }
}

이 코드는 괜찮아 보입니다. 상당히 간단한 피보나치 생성기, 재귀와 게으른 열거로 꾸며졌습니다. 작동해야합니다.

아니! 이것을 실행하면 OverflowException이 발생합니다. 우리가 십진수를 사용하고 있고 141 번째 피보나치 수 (~ 8.1E28)가 최대 십진수 (~ 7.9E28)를 초과하기 때문입니다.

그러나 int는 최대 값을 초과 할 때 OverflowException을 발생시키지 않습니다. 대신 예상대로 음수 값으로 오버플로됩니다. 따라서 다음 코드와 같이 int를 decimal로 대신 바꾸면 제대로 작동합니까?

static void Main()
{
    Console.WriteLine(string.Join(",", fib().Take(141)));
    Console.ReadLine();
}

static IEnumerable<int> fib(int n = 0, int m = 1)
{
    if (n == 0)
    {
        yield return 0;
        yield return 1;
    }
    while (true)
    {
        yield return n + m;
        foreach(var x in fib(m, n+m).ToList())
        {
            yield return x;
        }
    }
}

코드를 읽으면 왜 이것이 작동하지 않는지 분명해야합니다. 당신이하지 않았다면 ... 나는 유형을 10 진수에서 int로 변경하지 않았습니다. 또한 foreach 문에서 ToList ()를 호출했습니다. 이렇게하면 반환 된 열거자가 열성적으로 평가됩니다. 이로 인해 141 회귀가 아닌 무한한 횟수의 회귀가 발생합니다. 실제로 무한대에 도달하기 전에 스택에 오버플로가 발생하여 런타임에서 StackOverflowException이 발생합니다. (보너스 :이 예외는 잡을 수 없으므로 런타임이 중단됩니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.