You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编程新手求助:scanf参数传递触发-Wint-conversion类型转换警告

问题分析与解决

错误原因

你遇到的-Wint-conversion警告,核心是scanf的用法完全错误:

  • scanf的第一个参数必须是格式控制字符串(比如"%d"),用来指定要读取的输入类型;但你现在传的是printf("Enter your first no.")的返回值——这个返回值是printf成功输出的字符个数,是整数类型,和scanf需要的指针类型格式串不匹配,所以编译器抛出警告。
  • 另外,int a = scanf(...)的写法也不对,scanf的返回值是成功读取的输入项数量,不是你输入的数字本身。

修正后的代码

#include<stdio.h>
#include<string.h>

int main()
{   
    int a, b; // 先定义存储输入值的变量
    printf("Enter your first no.");
    scanf("%d", &a); // %d指定读取整数,&a是变量a的地址,让scanf把输入存到a中
    printf("Enter your second no.");
    scanf("%d", &b);
    int c = a + b;
    printf("your sum is :  %d ", c);
    
    return 0;
}

关键说明

  • scanf("%d", &a):"%d"是格式串,表示要读取一个整数;&a是取变量a的地址,scanf需要通过地址把用户输入的数值写入到变量a里。
  • 必须把提示输出和输入读取分开写,不要把printf的返回值传给scanf,这是完全错误的用法。

内容的提问来源于stack exchange,提问作者Achyut Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:06:38