初学C语言,想使用scanf来输入变量,我给一个变量赋了两个值,输出两次,结果却不一样
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int price = 0;
printf("请输入金额(元):");
scanf("%d,%d", &price,&price);
int change = 100 - price;
printf("找您%d,%d元。\n", change);
return 0;
}
请输入金额(元):3,5
找您95,-9元。
D:\C语言程序\Project2\x64\Debug\Project2.exe (进程 30596)已退出,代码为 0。
按任意键关闭此窗口. . .
赋予price两个值,根据结果和逻辑来看自然是后面那个值是最后一次赋予,因而有效,那么-9是什么?
这个-9不会随着输入的值变化而变化,就是说如果是输入4,3那么结果就是97,-9
而如果只输入2,那么结果是98,-9
求解
你输入两次price是啥意思呢?
printf("找您%d,%d元。\n", change);
你的printf中有两个%d,前一个输出了change值95,后一个没有指定变量,所以输出的实际是个垃圾值,-9只是凑巧而已
当你的printf不输入变量
它会自动填入一个地址
这个地址不是由你的变量申请的
所以它是上个执行程序遗留下来的垃圾值
你感觉它一直不变,只不过你的IDE比较智能,每次都申请同一个地址来运行程序,而不是每次都申请一个随机的地址
你重启一下IDE,或者你换个文件再粘这些代码,值就变了
输出没有对应变量,结果未知,随机的。你这里显示-9只是巧合
scanf的结果只是最后一输入的数据,另一个printf明显少写了一个变量。