for循环不加括号作用域到哪?

啃西瓜的小煤球 2017-07-27 12:45:26

上图中for循环没有大括号 下面有两个if语句 如果第一个if语句条件不满足的话 会进行第二个if语句的判断吗?
不是没有大括号的话 只能到第一个分号处吗?

...全文
1374 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 12 楼 ecjtu_j_yan 的回复:
[quote=引用 7 楼 A1010574609 的回复:] [quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote]
引用 7 楼 A1010574609 的回复:
[quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote] 因为你的i是在整个函数里面的,而不仅是for里面的,如果你是for(int i;..;..;)就不能引用了[/quote] 666 终于说到点子上了 谢谢您
「已注销」 2017-07-27
  • 打赏
  • 举报
回复
引用 10 楼 A1010574609 的回复:
[quote=引用 8 楼 trytry1992 的回复:] [quote=引用 7 楼 A1010574609 的回复:] [quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote] 因为你i定义在最上边呗。[/quote] i定义在最上面但是没有赋值啊 i是在for循环中赋的值[/quote] i在for里面赋值,所以啊,for循环以后的i的值就是sqrt(x)。
「已注销」 2017-07-27
  • 打赏
  • 举报
回复
引用 7 楼 A1010574609 的回复:
[quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote]
引用 7 楼 A1010574609 的回复:
[quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote] 因为你的i是在整个函数里面的,而不仅是for里面的,如果你是for(int i;..;..;)就不能引用了
trytry1992 2017-07-27
  • 打赏
  • 举报
回复
引用 10 楼 A1010574609 的回复:
[quote=引用 8 楼 trytry1992 的回复:] [quote=引用 7 楼 A1010574609 的回复:] [quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote] 因为你i定义在最上边呗。[/quote] i定义在最上面但是没有赋值啊 i是在for循环中赋的值[/quote] 建议你再看看语法定义
  • 打赏
  • 举报
回复
引用 8 楼 trytry1992 的回复:
[quote=引用 7 楼 A1010574609 的回复:] [quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote] 因为你i定义在最上边呗。[/quote] i定义在最上面但是没有赋值啊 i是在for循环中赋的值
赵4老师 2017-07-27
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
trytry1992 2017-07-27
  • 打赏
  • 举报
回复
引用 7 楼 A1010574609 的回复:
[quote=引用 6 楼 ecjtu_j_yan 的回复:] 第二个在for的外面
那为什么第二个if能用到for循环里i的值[/quote] 因为你i定义在最上边呗。
  • 打赏
  • 举报
回复
引用 6 楼 ecjtu_j_yan 的回复:
第二个在for的外面
那为什么第二个if能用到for循环里i的值
「已注销」 2017-07-27
  • 打赏
  • 举报
回复
第二个在for的外面
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
int prime(int x)
{
int i;
if(x==0||x==1) return 0;
for(i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
if(i>sqrt(x)) return 1;//是素数
}
int main(){
int a;
while(~scanf("%d",&a)){
printf("%d\n",prime(a)) ;
}
return 0;
}
  • 打赏
  • 举报
回复
引用 2 楼 CSDN_ZYJ_1990 的回复:
for循环运行完之后才会执行第二个if
这个函数验证过了是对的 在for循环执行完后 执行第二个if的话 不知道i的值是多少啊i的值是在for循环中赋值为2的
  • 打赏
  • 举报
回复
引用 1 楼 fight_in_dl 的回复:
引用
不是没有大括号的话 只能到第一个分号处吗?
你的理解是对的,第二个if分支在for循环外部。 题目中的写法不能得到正确的结果。 有条件的话,你可以上机测试验证。
这个素数判定函数是对的 已经验证过了
程序员-ZYJ 2017-07-27
  • 打赏
  • 举报
回复
for循环运行完之后才会执行第二个if
战在春秋 2017-07-27
  • 打赏
  • 举报
回复
引用
不是没有大括号的话 只能到第一个分号处吗?
你的理解是对的,第二个if分支在for循环外部。 题目中的写法不能得到正确的结果。 有条件的话,你可以上机测试验证。

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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