关于if()后面加;号的问题

水船 2018-02-03 04:42:25
#include<stdio.h>
int main()
{
int a,b;
a=1;
b=2;
if (a>b);
printf("1");


}


输出的是1
#include<stdio.h>
int main()
{
int a,b;
a=1;
b=2;
if (a>b)
printf("1");


}

然后没有输出,这个我是知道的,但是为什么if(a>b)后面加了";"之后会输出1出来呢?
...全文
3457 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2020-09-08
  • 打赏
  • 举报
回复
引用 18 楼 琢光 的回复:
[quote=引用 1 楼 自信男孩 的回复:]
#include<stdio.h>
int main()
{
int a,b;
a=1;
b=2;
if (a>b)
;
printf("1");


}

这个能输出1是因为不论if判断的条件是否为真,都会执行printf打印;
而去掉;(分号),printf的打印要看if条件是否为真,若为真则执行,否则不执行;
简单理解,加了分号,就是printf不在if的控制范围之内了;


去掉分号,结果不为真,还是一样打印出来”1“。[/quote]
那不可能,你测试一下试试。或者把你修改之后的代码再贴出来~
琢光 2020-09-07
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩 的回复:
#include<stdio.h>
int main()
{
    int a,b;
    a=1;
    b=2;
    if (a>b)
        ;
    printf("1");
 
     
}
这个能输出1是因为不论if判断的条件是否为真,都会执行printf打印; 而去掉;(分号),printf的打印要看if条件是否为真,若为真则执行,否则不执行; 简单理解,加了分号,就是printf不在if的控制范围之内了;
去掉分号,结果不为真,还是一样打印出来”1“。
PiPiDad 2018-02-07
  • 打赏
  • 举报
回复
加了;号后,后面的那句打印就不属于if块了
qq_41715735 2018-02-06
  • 打赏
  • 举报
回复
a的初始值为1,b的初始值为2,if判断语句是if(a>b),如果不加;这个条件是不满足的所以不输出,加上;号这个语句执行完毕,才会输出1
csdnzc_088 2018-02-06
  • 打赏
  • 举报
回复
这是基础问题,“if();” 这条语句判断后执行 “;”,完了再顺序的执行 ” printf("1"); ", “ if() printf("1"); "这条语句判断后执行 ” printf("1"); " 然后main()函数结束。
gzhosp_redAnt 2018-02-05
  • 打赏
  • 举报
回复
分号代表的是一个语句的结束。'
if (a > b);
表示判断完成之后,就结束,因为判断后并没有要求做什么。然后程序继续执行接下来的操作,输出1. 下一句
if (a>b)  printf("1");
表示的是,先判断条件是否成立,成立,后面没分号代表语句还没有结束。因此在前面的判断条件下看看是否执行输出1的操作
啊哈moment 2018-02-05
  • 打赏
  • 举报
回复
分号 阻断了if进行条件判断 即结束if语句块
CT8100 2018-02-05
  • 打赏
  • 举报
回复
;将条件判断和输出分开了~无论里面结果如何按照顺序流程,都会输出1。
jena_wy 2018-02-05
  • 打赏
  • 举报
回复
if加;后,if下面不执行,直接打印
赵4老师 2018-02-05
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
IMY0127 2018-02-05
  • 打赏
  • 举报
回复
加了";"表示这个if语句已经结束了,无论判断结果如何,都不执行任何操作。
hongss 2018-02-05
  • 打赏
  • 举报
回复
加了;相当于if的执行语句是一条空语句,后边的printf是一条独立的语句 二不加;时,后边的printf是if语句的执行语句,只有当前边的if条件成立时,才执行
leetow2006 2018-02-04
  • 打赏
  • 举报
回复 1
if (a>b); printf("1"); 相当于 if (a>b) ; printf("1"); 其实就是空语句
paschen 2018-02-03
  • 打赏
  • 举报
回复
if 后面如果不是大括号,if的范围只是紧接着的后一条语句,如果加了分号,if的范围只是这个分号的语句(一个空语句),后面的prinf不属于if的范围,即if成立只是执行一个空语句,prinf无论if是否成立均会执行
pgao02 2018-02-03
  • 打赏
  • 举报
回复
你这个有点类似悬挂if,建议在使用if else的时候,不管语句长短,都用{}括起来
destory27 2018-02-03
  • 打赏
  • 举报
回复
条件语句 后加 ; 相当于一条语句
自信男孩 2018-02-03
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
    int a,b;
    a=1;
    b=2;
    if (a>b)
        ;
    printf("1");
 
     
}
这个能输出1是因为不论if判断的条件是否为真,都会执行printf打印; 而去掉;(分号),printf的打印要看if条件是否为真,若为真则执行,否则不执行; 简单理解,加了分号,就是printf不在if的控制范围之内了;

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧