**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
1小时前关闭。
Improve this question
下面是我的代码:
#include <stdio.h>
int main()
{
int num;
printf("Enter a number:");
scanf("%d", num);
if (num % 2 == 0)
{
printf("%d is even.", num);
}
else
{
printf("%d is odd.", num);
}
return 0;
}
它应该给予如下输出:
Enter a number: 7
7 is odd.
但它显示:
Enter a number:7
PS C:\Users\abhin\OneDrive\Desktop\cprograming\c c++>
它没有显示任何错误。
3条答案
按热度按时间hkmswyz61#
在你的代码中
问题是,你错过了
&
- address of operator。根据scanf
definition,你需要传递你想要存储值的变量的地址。lfapxunr2#
问题是,你没有按照
scanf
的要求将num
作为指针传递,而是必须使用&
操作符获取num
的指针,如下所示:xzlaal3s3#
存在多个问题:
scanf("%d",num)
有未定义的行为,因为你传递了一个int
,其中scanf()
需要一个指向int
的指针。程序可能会安静地崩溃,将控制权返回给shell。改为写scanf("%d", &num)
。/W4
;对于gcc
和clang
,请使用-Wall -Wextra -Werror
。scanf("%d", &num)
是否返回了1
,以检测无效或丢失的输入。在一些较旧的系统上,缺少的换行符可能会导致输出丢失或在程序退出后与shell提示符混在一起。