C语言scanf返回值困惑:输入整数时n为何不是输入数值?
关于这段scanf代码的逻辑解释
你搞混了scanf的返回值含义,它根本不会返回你输入的整数内容,而是返回成功读取的变量个数。
看这段代码:
int n = scanf("%d", &i); if (n == 1) {
- 当你输入整数5时,
%d格式符成功匹配到一个有效整数,把5存入变量i,这时候scanf返回1(表示成功读取了1个变量),所以n==1的判断为真,会进入if分支。 - 只有当输入的内容无法被
%d识别为整数时(比如输入字母、符号),scanf才会返回0,这时候才会进入else分支;如果遇到输入结束(比如按Ctrl+D),它会返回EOF(通常是-1)。
内容的提问来源于stack exchange,提问作者S.Legends
相关产品推荐
相关产品推荐

