【发布时间】:2017-07-26 21:27:47
【问题描述】:
我正在尝试将一些代码从 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;}
?
【问题讨论】:
-
如果没有括号,只有第一个语句被认为是 if-else 块的一部分。所以它相当于你的第一个选项。
-
为什么
else会吞下多个语句?顺便说一句,行数无关紧要。 -
“我无法快速访问 C 编译器”下载一个和一个调试器。无论如何,您都需要一个来进行测试/调试,现在获得这些工具将使您能够测试任何此类混淆。
-
.. 或者只是在在线编译器上尝试一下。
-
如果使用
if语句,1) 不要省略括号,2) 不要将两个括号放在同一行。您不会通过存储这些额外的字符来破坏您的 SSD。但是,如果三元运算符可能使表达式更具可读性,例如:*i = (stuff==1) ? 1 : Ne,则可以节省一些输入。
标签: c if-statement conditional