for( i=x ; i-- ; ) 어떻게 해석해야 하나요?

mixmccym의 이미지

안녕하세요 c언어로 된 코드를 보다가 궁금한 점이 생겼습니다

int i,x;
 .
 .
 .
x=10
 
for( i=x ; i-- ; )
생략

이렇게 3번째 구문이 비어있는 for문은 어떻게 해석해야 하나요?
특히나 위의 소스에서는 2번째 식에 증감연산자를 사용했는데요 어떻게 해석해야하나요?

그리고 저 for을 3개의 구문이 다 들어가있는 형식으로 바꾼다면 어떻게 작성하면 될까요??

Fe.head의 이미지

 for( i = x ; i != 0 ; i-- )

와 같습니다.

for문중 두번째가 조건문이 들어가기 때문에
두번째에 true, false 둘중 하나가 들어갑니다.

그런데 false 는 0과 같고
true 는 0이 아닌 모든수이기 때문에

위의 for문은 0이 될때까지 반복 됩니다.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

Hyun의 이미지

위에 분은 틀린거 같은데...

i=x
while( i != 0 )
{
    i--;
 
    ...
}
i--;

silasoni의 이미지

for(i=x-1;i=0;i--)
{
}

Fe.head의 이미지

for( i = x-1 ; i != 0 ; i--)
{
}

이게 맞을듯

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

rjaechang의 이미지

for문에 어떻게 해도 3개의 인자를 모두 채워서는 같은 값이 안나오더군요.x가 0보다 크다고 가정하고 i>=0으로 하면 할 수도 있겠는데;

x = 5라고 했을때

for(i=x;i--;)
printf("%d ",i); 를 하면 4 3 2 1 0 이 나오게 됩니다.

for( i = x-1 ; i != 0 ; i--)는 5 4 3 2 1이 나오구요.

hyun님의 while문은 결과값은 동일하게 나오네요. 최종 i값까지;;

...신기하군요 -0-!!

(~`0`)~

Fe.head의 이미지

아. i-- 가 가운데 있군요.

후위 연산자라.. 한번 더 가겠네요^^;

#include <iostream>
 
using std::cout;
using std::endl;
 
// for문 첫번째 값 출력
int print_1( int a )
{
    cout << " 첫번째:" << a;
    return a;
}
 
// for문 두번째 값 출력
int print_2( int a )
{
    cout << " 두번째:" << a;
    return a;
}
 
// for문 세번째 값 출력
int print_3( int a )
{
    cout << " 세번째:" << a;
    return a;
}
 
int main()
{
    int x = 5;
    int i = 0;
    for( print_1( i = x ) ; print_2( i-- ); print_3( 0 ) )
    {
        cout << "  본문 i=" << i << endl;
    }
 
    cout << "\n";
    return 0;
}

결과

 첫번째:5 두번째:5  본문 i=4
 세번째:0 두번째:4  본문 i=3
 세번째:0 두번째:3  본문 i=2
 세번째:0 두번째:2  본문 i=1
 세번째:0 두번째:1  본문 i=0
 세번째:0 두번째:0

처음과 같은 소스는 피하라고 말하고 싶네요.
거의 암호 해독수준이라
소스는 보기 편해야 합니다.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

haze11의 이미지

for문 안에 꼭 뭐가 들어갈 필요는 없습니다. :)

for (;;)
{
...
}

뭐 이런것도 있으니 말이죠 =.=

dg의 이미지

3개의 구문이 다 들어가있는 형식으로 바꾼다면....

for (i = x - 1; i != -1; --i)

madman93의 이미지

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

Fe.head의 이미지

for( 변수초기화 ; 비교문 ; 변수증가 )
   본문

for문을 while문으로 바꾸면.

변수초기화;
while( 비교문 )
{
 본문;
 변수 증가;
}

이렇게 되는듯 보입니다.

처음코드를 아래것으로 while문으로 고치면 아래와 같을듯.

int x = 5;
 
// for( int i = x ; i-- ; )
int i = x;
while( i-- != 0 )
{
  printf("%d", i );
}

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.