C ++条件语句

时间:2014-01-14 03:36:08

标签: c++

注意:使用python背景学习C ++背景

查看下面代码的最后一条if语句: 在if语句之后i = 1的含义是什么。 看着最后的其他声明。 在else语句之后i = 0的含义是什么? 为什么他们在那里

#include <stdio.h> // preprocessor command
int foo(int x) // function definition
{ 
return x+1; // return expression value
}

int main() // this is where all C programs start
{
    int i = 0; // variable definition + init.
    while (i < 10) 
    { // loop + condition
        i = i+1; // expression + assignment
        printf("%d ", foo(i)); // function calls, output
    }
    if (i >= 10) i = 1; // conditional code execution
    else i = 0;
    return i; // return result, exit function
}

6 个答案:

答案 0 :(得分:1)

在您的示例中,i=1是一个未包含在if - 语句中的赋值语句,而不是条件代码。它相当于

if (i >= 10) // conditional code
    i = 1; // will execute if i>=10

或更清晰

if (i >= 10) // conditional code
{
    i = 1; // will execute if i>=10
}

如果你想要,不推荐,你可以在一行中写下所有代码。

您应该了解不同语言的indent style

  

缩进不是大多数编程语言的要求,它被用作辅助表示法。相反,程序员缩进以更好地将他们的程序结构传达给人类读者。特别是,缩进用于显示控制流结构(如条件或循环)与包含在其内部和外部的代码之间的关系。但是,某些编程语言(如Python和Occam)使用缩进来确定结构,而不是使用大括号或关键字。

答案 1 :(得分:0)

这只是一行if声明。如果只有一行要执行,则不需要大括号。

答案 2 :(得分:0)

尝试将代码更改为::

 #include <stdio.h> // preprocessor command
 int foo(int x) // function definition
  { 
  return x+1; // return expression value
  }

  int main() // this is where all C programs start
       {
        int i = 0; // variable definition + init.
while (i < 10) 
{ // loop + condition
    i = i+1; // expression + assignment
    printf("%d ", foo(i)); // function calls, output
}
if (i >= 10) {
         i = 1; // conditional code execution
      }else{
     i = 0;
   }
  return i; // return result, exit function
 }

你在使用循环时应该非常小心使用大括号,如果你在if(i<10)中调整条件,如果你放了大括号,那么只有你的控件才会根据循环中提到的条件在循环中移动。

答案 3 :(得分:0)

它们是C / C ++等同于Python 3的

i = 1 if i >= 10 else 0

在C ++中,if / else关键字采用声明:

if ( condition )
    <statement>
[else if ( condition ) 
    <statement>]
[else
    <statement>]

声明是一个以分号结尾的条款,例如: a = b;,或复合语句,括在{} s中,例如

if ( a == 1 )
    std::cout << "a is one\n";
if ( a == 2 ) {
    std::cout << "a is two\n";
    return 0;
}

C ++在很大程度上并不关心空白。所以上面等同于

if(a==1)std::cout<<"a is one\n";if(a==2){std::cout<<"a is two\n";return 0;}

if ( a
== 1 )
{
    std :: cout
    <<
    "a is "
    "one"
    "\n";
}  if  // horrible but legal.
(
    a ==
          2)
{ std ::
   cout
     <<
       "a is two"
         "\n"
           ;
             return
               0
                 ;
               }

或其他各种排列:)

答案 4 :(得分:0)

与python相比,C / C ++确实需要使用缩进来分隔代码块。

如果if / else之后的语句是单个项目,则不需要大括号。

if(x) a(); else b();

相当于:

if(x){ a(); }else{b();}

if(x)
{
    a();
}
else
{
    b();
}

答案 5 :(得分:0)

它们是与Python相同的C / C ++

i = [1 if i >= 10 else 0]

在C ++中,if / else关键字采用声明:

if ( condition )
    <statement>
[else if ( condition ) 
    <statement>]
[else
    <statement>]

声明是一个子句,以分号结尾,例如a = b;或{}中包含的复合语句,包含一个或多个以分号结尾的语句或复合语句

statement :=
    statement-text ';' |
    '{' statement '}'

如下:

if ( a == 1 )
    std::cout << "a is one\n";
if ( a == 2 ) {
    std::cout << "a is two\n";
    return 0;
}

C ++在很大程度上并不关心空白。所以上面等同于

if(a==1)std::cout<<"a is one\n";if(a==2){std::cout<<"a is two\n";return 0;}