向往前方ing 发表于 2022-11-14 16:39:42

C语言

像这样写if语句,if();
                        {
                        }
当条件为真时后面的程序段能被执行吗?
拜求大佬们解惑

wp231957 发表于 2022-11-14 16:41:33

分号表示本条语句结束
if 后面的语句不受if 管辖

嘉岳呀 发表于 2022-11-14 16:42:09

if 语句 在 if() 的后面没有分号

if(逻辑表达式A)
{
    如果逻辑表达式值为真,执行大括号里的语句
}

嘉岳呀 发表于 2022-11-14 16:42:53

如果 if() 后有分号,那么如果值为假,也会执行大括号里的语句(应该是这样)

zhangjinxuan 发表于 2022-11-14 16:47:55

if(/*表达式*/);
{
    //代码
}
不管表达式成立还是不成立,都会执行下面的代码,因为 if 后面有一个分号,就是成真执行空语句,否则还是什么也不执行

你可以把 if(/*表达式*/); 理解为:
if(/*表达式*/) {
    ;
}
所以 if 和下面的代码块完全不能联系起来,答案就是:

不管 表达式 是否成立,下方的代码都可以执行,因为这里的 if 与下方的代码没有任何联系。

wp231957 发表于 2022-11-14 16:48:18

tommyyu 发表于 2022-11-14 16:45
不会

zhangjinxuan 发表于 2022-11-14 16:48:32

tommyyu 发表于 2022-11-14 16:45
不会

不..不会??!

zhangjinxuan 发表于 2022-11-14 16:49:08

嘉岳呀 发表于 2022-11-14 16:42
如果 if() 后有分号,那么如果值为假,也会执行大括号里的语句(应该是这样)

是的,就是这个意思,这里的 if 与大括号中的代码没有任何的联系

tommyyu 发表于 2022-11-14 16:52:11

zhangjinxuan 发表于 2022-11-14 16:49
是的,就是这个意思,这里的 if 与大括号中的代码没有任何的联系

确实想表达这个意思{:10_285:}

{:10_266:}{:10_266:}{:10_266:}

zhangjinxuan 发表于 2022-11-14 16:54:09

tommyyu 发表于 2022-11-14 16:52
确实想表达这个意思

然后……就是不会表达?{:10_277:}

tommyyu 发表于 2022-11-14 16:54:34

zhangjinxuan 发表于 2022-11-14 16:54
然后……就是不会表达?

刚才脑子抽了{:10_285:}

jackz007 发表于 2022-11-14 17:08:26

本帖最后由 jackz007 于 2022-11-14 18:11 编辑

          你这样写:
if();
{
}
         if() 后面带分号,意思是 if() 作为一条独立的语句已经结束,与后续的语句括号 {} 没有任何关系,就是说,无论 if 是真是假,后面语句括号内的语句都一定会被执行;
         如果要写成条件执行,那就必须把 if() 后面的分号去掉,写成
if()
{
}
          这个样子,这样,if() 才能连同后续的语句括号整体(甚至连同 else if 和 else 语句块,如果有的话)被视为同一条复合语句,只有 if 为真的时候,语句括号内的所有语句才会得到执行。

Redmi 发表于 2022-11-14 17:35:24

if()后不能加;吧?
刚学不懂。

zhangjinxuan 发表于 2022-11-15 09:08:21

Redmi 发表于 2022-11-14 17:35
if()后不能加;吧?
刚学不懂。

可以加,只是这种写法没有意义
页: [1]
查看完整版本: C语言