C语言,一个小问题,为什么在if后面一直都没有花括号?

#include<stdio.h>
void main()
{
int x,y;
scanf("%d",&x);
if(x<100)
y=-1;
else
if(x==50)y=0;
else y=1;
printf("x=%d,y=%d\n",x,y);
}

1、加上大括号相当于一个语句块,if条件只影响其后面的第一个语句或语句块,加括号的话,则执行括号中的全部语句(也就是在if条件成立的情况下,则全部执行,如果if条件不成立,则整个括号中的语句都不执行);而不加括号的话,则影响其后的第一条语句,也就是说不管if条件成不成立,第一句以后的都不会有任何影响。if 语句后有大括号, 则大括号里面所有的语句都会在if表达式为真时执行;如果没大括号,则if表达式为真时只会执行第一条语句.

2、例如:

#include <stdio.h>
int main()
{
    if (true)
    {
        printf("11111111111\n");  // 这两条都会打印
        printf("11111111111\n");
    }
    if (false)
        printf("11111111111\n"); // 只有这一条不会打印
        printf("22222222222\n"); // 以下两条都会打印
        printf("22222222222\n");
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-18
如果没有花括号,则是简单语句,有则是复合语句。
if(x<100) y=-1;
和if(x<100) {y=-1;}是等效的,如果有两条以上的,则是复合语句,用{},如if(x<100) {y=-1; x=0;}
如果不用{}, 则x=0;是无条件执行的,这时再else就会错误。
第2个回答  2014-07-18
如果if后面的语句只有一条的话,可以省去花括号;
如果有多条,则花括号不能省去。
第3个回答  2015-10-11
花括号表示一个代码块

if只能控制一个代码块或一条语句,当只需要控制一条语句时,可以忽略不写代码块,不过为了可读性建议if语句不论是否只控制一条语句统一加上花括号
第4个回答  2014-07-18
if条件成立时执行的语句只有一条的话,可以不加大括号,else也是本回答被提问者采纳