诗岑 2020-02-01 15:27 采纳率: 93%
浏览 1362
已采纳

请问这一行有什么bug吗?

代码中第五行出现了问题:

#include <stdio.h>
main(){
    int a, b,z;
    scanf_s("%d", "%d" ,& a, &b);
    z = max(a,b);
    printf("%d", z);
}
int max(int a, int b) {
    if (a > b)return a;
    else return b;
}

警告内容为:

警告 C6328 大小不匹配: 已将“char”作为 Param(2) 传递,但需要使用“32 bit operand”来调用“scanf_s”。这表示可能存在严重错误。若针对像 scanf 这样的函数报告此信息,可能表示发生缓冲区不足或溢出。

警告 C6271 向“scanf_s”传递了额外参数: Param(3) 未由格式字符串使用。

请问是什么意思?如何解决?

  • 写回答

3条回答 默认 最新

  • 智者知已应修善业 2020-02-01 17:37
    关注

    scanf_s("%d", "%d" ,& a, &b);要按人家规定的格式写 scanf_s("%d,%d" ,& a, &b);
    另外还有声明函数原型或把函数放在main前面

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?