无大括号的if条件语句执行逻辑及行为咨询
无大括号
if语句的行为说明 条件为false时的表现
写if (i==1)不带大括号的情况下,若条件不成立(false),程序不会中断,也不会执行任何额外操作,只会直接跳过if绑定的那一条语句,继续执行后续代码。
仅带注释的无大括号if
你碰到的if (id == 0x11) //OK这种写法,其实是if关联了一条空语句——因为注释不属于可执行代码,不管条件是true还是false,这条if都不会触发任何实际操作,程序会直接往下走。
关于“下一行作为执行内容”的疑问
你的推测完全正确:当if后面没有大括号时,它只会绑定紧随其后的单条语句(可以是赋值、函数调用,甚至嵌套的if/else,但必须是单个语句单元)。举个例子:
if (i == 1) printf("条件成立"); printf("不管条件如何都会执行");
这里只有printf("条件成立");受if的条件控制,后面的printf不受影响。
但这种写法有个常见坑:如果后续在if下方新增了缩进的代码,很容易被误以为属于if的执行块,但实际上不会受条件控制。比如:
if (i == 1) printf("条件成立"); printf("我不受控制!"); // 不管i是不是1都会执行
内容的提问来源于stack exchange,提问作者Jakub Beling
相关产品推荐
相关产品推荐

