我正在尝试将一些代码从C转换为另一种语言。我没有快速访问C编译器,只是发现自己与单行if语句混淆。我知道这样的陈述:
if (condition) [statement]
和
if (condition)
[statement]
可以在没有括号的情况下进行评估,即相当于:
if (condition) {[statement]}
和
if (condition)
{[statement]}
分别是,但我不确定我正在处理的示例代码。它是:
if (ge.g[*l][*k].s==1) *i=1; else *i=Ne;
*j=*l;
我觉得第二行不受if语句的影响,但是从代码的上下文中看不出来。长话短说:以上相当于:
if (ge.g[*l][*k].s==1) {*i=1;} else {*i=Ne;}
*j=*l;
或
if (ge.g[*l][*k].s==1) {*i=1;} else {*i=Ne;
*j=*l;}
答案 0 :(得分:5)
以下代码
if (ge.g[*l][*k].s==1) *i=1; else *i=Ne;
*j=*l;
正确格式化时,如下所示:
if (ge.g[*l][*k].s==1)
*i=1;
else
*i=Ne;
*j=*l;
这是带有大括号的等效代码:
if (ge.g[*l][*k].s==1)
{
*i=1;
}
else
{
*i=Ne;
}
*j=*l;
这显示了正确格式化代码的重要性,因此人类可以阅读和理解,而不仅仅是编译器。
答案 1 :(得分:1)
花括号实际上将一些语句组合为一个复合语句。
if
的语法如下:
if (condition) statement1 [else statement2]
其中[]表示:可选
现在statement1
可以是单个语句(由分号分隔),也可以是所谓的复合语句,即用大括号括起来的一组后续语句。 statement2
也是如此。
这就是为什么你的第一个选择是正确的。如果涉及第二行,则必须使用大括号,将语句组合成一个复合语句。由于没有" curlies",第一种选择是正确的。
答案 2 :(得分:1)
单一陈述(不含括号)。
一个声明是以单身结尾的操作;登录强>
if (condition)
statement 1;
示例:
if (ge.g[*l][*k].s==1)
*i=1; // statement 1
else
*i=Ne; // statement 1
*j=*l; // statement 2
单一陈述(带括号)。
if (condition) {
statement 1;
}
示例:
if (ge.g[*l][*k].s==1) {
*i=1; // statement 1
}
else {
*i=Ne; // statement 1
}
*j=*l; // statement 2
多个声明(带括号)
当您的对帐单多个时, 只需要 。
示例:if (condition) {
statement 1;
statement 2;
statement n;
}
if (ge.g[*l][*k].s==1) {
*i++; // statement 1
*i++; // statement 2
*i++; // statement 3
}
答案 3 :(得分:0)
简化括号
{}
创建一个"化合物"声明(我知道C学者会非常沮丧地看到这个"定义")。在你的问题中,单个语句可以用复合语句替换(在大括号中)。语句的位置无关紧要,因为编译器忽略了大部分空格(除了字符串和预处理器处理的所有内容)。你甚至可以添加100000个换行符,它不会改变任何东西。它对我们人类来说很重要:))
if(x==y)start(x);else start(y);
===
if (x == y)
start(x);
else
start(y);
===
if (x == y)
start( x );
else
start( y)
;
但第二个是最容易阅读恕我直言的人:)