关于C语言的一个问题,当if语句后的花括号去掉之后
答案:6 悬赏:30
解决时间 2021-02-10 09:14
- 提问者网友:空白
- 2021-02-10 01:38
关于C语言的一个问题,当if语句后的花括号去掉之后
最佳答案
- 二级知识专家网友:何必打扰
- 2021-02-10 01:49
当你把if后的大括号去掉后,那么这时if语句的执行语句只有一条就是:t=a
这是如果输入的 a 比 b小就是说满足if的执行条件,那么和你不去掉大括号是一样的
都都会完成ab交换
但是,当你输入的a》b时,if (a<b) t=a;不会被执行
会直接在下一条也就是 a=b执行
所以你的28可以正确得到
而此时的t并没有被准确赋值,t的值是编译程序随机赋值的,所以b=t这句之后,b才会那样
这是如果输入的 a 比 b小就是说满足if的执行条件,那么和你不去掉大括号是一样的
都都会完成ab交换
但是,当你输入的a》b时,if (a<b) t=a;不会被执行
会直接在下一条也就是 a=b执行
所以你的28可以正确得到
而此时的t并没有被准确赋值,t的值是编译程序随机赋值的,所以b=t这句之后,b才会那样
全部回答
- 1楼网友:湫止没有不同
- 2021-02-10 06:43
if (a<b)
在a<b的情况下
输入的数值交换
- 2楼网友:承载所有颓废
- 2021-02-10 05:16
当花括号去掉之后只有第一句是会跟着if判断的,后面两句是必定执行的。
当你输入12和37之后,判断a<b不为0,if后面那一句执行,t=12,然后a=37,b=12。
当你输入59和28之后,判断a<b为0,if后面那一句不执行,然后执行a=b,b=t,也就是a=28,b=t,由于t没赋初值,t就是给他分配的那块内存空间中原先存的数,就是那一堆乱数,然后b就等于那一堆乱数了。
- 3楼网友:傲娇菇凉
- 2021-02-10 03:44
当你if后面的花括号去掉之后,默认表示
if (a<b) t=a;
这句话判断一下是否执行,而
a=b;
b=t;
必定执行。
12<37所以,t=a=12.因此 在后面a=37,b=t=12.
而59>28, 语句t=a不会执行。在后面a=b=28,而b=t,由于t没有初始化,所以是一个随机数,因此输出-858993460
- 4楼网友:花一样艳美的陌生人
- 2021-02-10 03:23
对于 这个程序来说 ,加与不加都一样。 对于c语言中的循环和if语句来说,其执行体只能有一条语句,如果有超过一条语句,就要用大括号括起来,而这个程序中的外层for的执行语句就是另一个for循环,所以外循环的执行体只有一条语句,可不加大括号,对于内循环来说 ,它的循环体也只有一条if语句,对于这条if语句来说,它的执行体也只有一条赋值语句。所以可以不加大括号。
- 5楼网友:狠傷凤凰
- 2021-02-10 02:32
if (a<b){t=a;a=b;b=t;}
你说的是这一对花括号吗?
如果不加花括号,与if自动贴合的只会是t=a;也就是if下面的第一句话,其他的都和if没有关系了。也就是成了if(a<b) t=a;这样的结构,如果a<b成立,那就t=a吧,至于a=b;b=t;就与if判断没有关系了。而是执行完if这个整体结构后顺序往下遇到的结构。
如果不去掉花括号,if后面的三句话是一个整体,if条件成立的话都执行,否则都不执行。
去掉花括号,if成立执行第一句,然后下面不属于if结构但是顺序执行;如果if不成立,第一句t=a不执行,继续执行下面的两句。
就和else和if的关系似的,else只贴合于距离他最近的那个if。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯