注意:使用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
}
答案 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;}