在VS Code中用if-else判断输入数字奇偶的C程序异常问题
问题分析与解决:C语言奇偶判断程序无输出问题
核心错误出在scanf("%d", num);这一行——scanf需要传入变量的内存地址,直接传变量num的值会导致程序触发未定义行为(比如非法内存访问),程序在执行到scanf后可能直接终止,后续的printf语句根本没机会执行,因此看不到预期输出。
修正方案
将scanf的参数改为&num(取地址运算符),让scanf能正确把输入的数值存储到num变量中。
修正后的完整代码:
#include <stdio.h> int main() { int num; printf("Enter a number:"); scanf("%d", &num); // 此处修改为&num if (num % 2 == 0) { printf("%d is even.", num); } else { printf("%d is odd.", num); } return 0; }
验证结果
运行修正后的代码,输入7后会得到预期输出:
Enter a number:7 7 is odd.
补充说明
num是int类型变量,存储的是整数数值;而scanf的%d格式符要求对应参数是int*(整数指针,即变量的内存地址)。- 直接传
num相当于把一个随机整数(num未初始化,初始值随机)当作地址传给scanf,scanf尝试往非法地址写入数据,触发未定义行为,程序直接终止,后续输出逻辑无法执行。
内容的提问来源于stack exchange,提问作者Abhinav Jha
相关产品推荐
相关产品推荐

