我目前是编程新手。传递“scanf”的参数 1 使指针从整数而没有强制转换 [-Wint-conversion],是我的错误

I'm currently new to programming. passing argument 1 of 'scanf' makes pointer from integer without a cast [-Wint-conversion], is my error

提问人:Achyut Anand 提问时间:2/22/2023 更新时间:2/23/2023 访问量:56

问:

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

int main()
{   
    int a = scanf(printf("Enter your first no."));
    int b = scanf(printf("Enter your second no."));
    int c = a + b;
    printf( "your sum is :  %d ", c );
    
    return(0);
}

我尝试修改代码几次,但没有用。

c 警告

评论

0赞 Some programmer dude 2/22/2023
你似乎跳过了初学者材料的一些非常早期的章节。该函数并不像您猜测的那样工作。scanf
1赞 Weather Vane 2/22/2023
跟着一本书或教程比猜测要好。
0赞 Gerhardh 2/22/2023
你是如何尝试修改代码的?您是否查看了您正在使用的功能的规范?
0赞 Community 2/23/2023
请澄清您的具体问题或提供其他详细信息以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。

答:

0赞 Sandrious 2/22/2023 #1

您以错误的方式使用 scanf() 函数。在 scanf() 函数的最后面,你有控制字符串,以 “ 开头和结尾,并且必须包含一个或多个格式说明符。每个格式说明符都对应于特定的数据类型。检查什么是“格式说明符”,并检查每种数据类型的格式说明符是什么。在每个格式说明符之前留出 1 个空位置是一个很好的提示。如果您使用多个格式说明符 - 那么您只需用 1 个空格分隔它们。

在控制字符串之后,放置一个逗号“,”,然后是变量的地址。当你把符号“&”和变量的名字放在一起时,你就会这样做。请记住,格式说明符必须与变量所属的数据类型相对应。

因此,要使代码正常工作,您必须像这样编辑它:

#include<stdio.h>
/*#include<string.h> - You don't need this header file*/

int main()
{   
    int a, b; //Defining multiple variables of same type.
    printf("Enter value for a: ");
    scanf(" %i", &a);//Assigning value to a;
    printf("Enter value for b: ");
    scanf(" %i", &b);//Assigning value to b;

    printf("Your sum is: %i", (a+b));//You don't need third variable, to store the sum.

    return(0);
}

专业提示:当您使用“%d”和“%i”格式说明符进行输入时(即“scanf()”),这是有区别的。如果使用“%d”,则只能以十进制数字系统(所谓的“以 10 为基数”)输入值。如果使用“%i”,则可以在八进制、十进制或十六进制数字系统中输入整数值。