如果声明没有括号

时间:2015-02-19 17:53:18

标签: c if-statement

我希望对没有括号的ifif else语句以及如何阅读它们做一些澄清。我可以轻松地阅读if elseelse if括号中的语句,它们对我有意义,但这些一直让我感到困惑,这是一个示例问题。

if (x > 10)      
     if (x > 20)
          printf("YAY\n");    
else      printf("TEST\n");

4 个答案:

答案 0 :(得分:3)

如果没有括号,else将立即与if相关联。所以,要正确地展示你的例子:

if (x > 10)      
     if (x > 20)
          printf("YAY\n"); 
     else // i.e., x >10 but not x > 20
          printf("TEST\n");

答案 1 :(得分:3)

如果if / else上没有括号,则if后面的第一个语句将被执行。

如果声明:

if (condition)
    printf("this line will get executed if condition is true");
printf("this line will always get executed");

如果/否则:

if (condition)
    printf("this line will get executed if condition is true");
else
    printf("this line will get executed if condition is false");
printf("this line will always get executed");

注意:如果if和匹配的else之间有多个命令,你的代码就会中断。

if (condition)
    printf("this line will get executed if condition is true");
    printf("this line will always get executed");
else
    printf("this else will break since there is no longer a matching if statement");

答案 2 :(得分:2)

不带括号的if语句只会考虑if:

之后的下一个表达式
 if(foo > 5)
   foo = 10;
 bar = 5;

这里,如果foo大于5,则foo将仅设置为10,但bar将始终设置为5,因为它不在if语句的范围内,这将需要括号。

答案 3 :(得分:-1)

if (x > 10)      
{
     if (x > 20)
     {
         printf("YAY\n");    
     }
     else
     {
         printf("TEST\n");
     }
}