这条语句 while(scanf("%f",&score)==1)
scanf后面为什么不需要加分号
这条语句 while(scanf("%f",&score)==1) scanf后面为什么不需要加分号
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在C语言中,
while
循环是一个控制结构,它会检查一个条件是否为真,如果条件为真,则执行循环内的代码块。while
语句的基本语法格式是这样的:while (condition) { // code to be executed if condition is true }
在这个例子中,
condition
部分是scanf("%f", &score) == 1
,这是一个布尔表达式,用于判断输入是否成功。scanf()
函数返回的是读取到的有效数据项的数量,对于%f
格式符,如果成功读取了一个浮点数,它将返回1。因此,这个条件语句实际上是检查每次输入是否有效。在C语言中,条件表达式本身就是一个完整的语句,不需要在其后添加分号。这与像赋值语句(例如
int x = 5;
)这样的其他语句不同,它们确实需要在末尾加上分号作为语句终止符。所以,当编写一个
while
循环时,只需要在括号内放置条件表达式,然后在大括号内写入要执行的代码,无需在条件表达式后面添加分号。正确的写法就是你提供的这样:while (scanf("%f", &score) == 1) { // process score }
这段代码会持续从标准输入读取浮点数,并将其存储在变量
score
中,只要读取操作成功(即输入的数据可以被解析为一个有效的浮点数),就会继续执行循环中的代码。如果用户输入的数据无法被解析为浮点数,scanf()
将返回0,此时条件变为假,循环结束。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表