[질문]Vim 질문입니다..그리고 C언어배열도 같이 질문합니다.

등짝을보자의 이미지

#include <stdio.h>
 
#define N 10
 
int main()
{
  int x[N];
  int i;
 
  for(i=0;x[i];i++)
  {
    printf("%d\n",i);
  }
  return 0;
}

for 문을 보시면 조건문의 x[i] 입니다..이렇게 했더니 오류가 안나오고 돌아가던군요..
이게 원리가 궁금합니다....그리고
실행하니 0~6 까지 실행되더군요.... N 10 으로 설정했는데 말이죠..
이건 또 왜이런건가요??

그리고 Vi 명령어 중에 이런게 있나요??
{ 이거 꺽쇠에 해당하는 } 이걸 자동으로 찾아가게해주는 게 있나요??

그리고 .vimrc 파일에 set complete 을 추가해줬더니만...
vim 접속시 엔터을 한번더 눌러야 접속이되더군요..
예전처럼 한번에 들어가고싶은데 어떻게 해야하나요??
cr을 넣어봤지만 안되더라구요...

ironiris의 이미지

x[]가 초기화가 안되어있구... 쓰레기값이 들어있었는데 x[7]에 거짓으로 판단되는 값이 들어있었나보네요.

cronex의 이미지

for문의 조건부가 x[i] 인데...
x[i] 가 0 인 순간 끝나버리는 겁니다.
정확하게 하시려고 했다면 i < N 으로 하셨어야죠;

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

JungJoohwan의 이미지

vim 에서 매치되는 괄호 찾아가는 키는 ]} 입니다.

등짝을보자의 이미지

i 꺽쇠 N 하면 당연히된다는 거 알죠...-_-; (이거 꺽쇠어떻게 적는거죠? -_-a)
제가 질문을 좀 이상하게 했나보네요..

x[i] 이 배열이 언제가는 0 의 되더군요..이게 왜 0 이 되는건지 궁금해서요..
초보자여서 궁금한게 많습니다..-_-;


감비노도 궁금해하더라구..등짝!..등짝을보자!..


감비노도 궁금해하더라구..등짝!..등짝을보자!..

blkstorm의 이미지

함수에 진입하면서 로컬 배열을 위한 스택메모리를 할당하면서 초기값이 0이 아닌 쓰레기 값으로 할당되어서 for 문이 돌아가는 것같습니다.

'언젠가는 0이 된다'는 것은 아주 우연히 그 배열의 쓰레기 값중에 하나가 0으로 된 것입니다.

근본적으로는 함수에 진입할 때 스택을 할당하면서 어떻게 초기화하느냐의 문제인데, 플랫폼에 따라서, 컴파일러에 따라서 처리하는 방식이 다른 것으로 알고 있습니다.

gcc라면 warning이 뜰 것같습니다만...

그리고!!

저런식으로 코드 짜면 같이 일하는 사람한테도 욕먹고, 본인도 몇달 (제 나이면 며칠)만 지나도 왜 저런식으로 조건문을 넣었는지 까먹습니다.

가능한한 조건문에서 사용되는 변수는 적게 하셔야합니다. (올리신 for문에서는 x,i두개를 참조하도록 되어있습니다.)

'절대로!!' 저렇게 코딩하지 마세요!!

그리고, vim에서 괄호짝을 찾는 기능은, Control mode에서 커서를 해당괄호에 갖다 놓고 퍼센트 표시(Shift+5)를 누르시면 괄호짝으로 이동합니다.

요즘 vim에서는 커서가 괄호로 이동하면 그 괄호짝이 자동으로 highlight되더군요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.