鱼C论坛

 找回密码
 立即注册
查看: 3536|回复: 4

scanf函数问题

[复制链接]
发表于 2012-4-18 12:04:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
初学输入函数,有以下问题
#include<stdio.h>
int main(void)
{
int a,b,c;
scanf("%d%d",&a,&b);
c=a>b?a:b;
printf("max=%d",c);
return 0;
}
如果输入两个整形数据,结果当然正确,但是如果我输入其它字符,程序也会有输出,比如我从键盘输入ab
输出max=-858993460,想问一下这个结果是怎么样得出的?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-18 12:46:30 | 显示全部楼层
输入语句scanf函数,会接受你从键盘输入的对应的数值或者字符以及字符串等。
但是,必须与其指定类型相符合才输入正确,形成有效值。
其实,scanf函数也有返回值,当scanf成功输入1个变量值时,返回1;成功输入n个变量值时,返回n。
所以,当你输入ab,其实scanf也会对所指的的变量赋值,但是可能会赋值失败,这样会形成错误。
至于结果max=-858993460是一个错误的值,没有任何意义。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-18 12:56:36 | 显示全部楼层
谢谢版主,原来这个结果毫无意义啊!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-19 01:10:37 | 显示全部楼层

湮汐 请问下,这个 函数返回值,到底有什么用呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-19 10:09:53 | 显示全部楼层
心静如死水 发表于 2012-4-19 01:10
湮汐 请问下,这个 函数返回值,到底有什么用呢?

例如 while(scanf("%d",&a) == 1),可以用此来判断对a赋值有没有成功,如果这里输入一个字母q,那么赋值不成功,会终止循环。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 21:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表