此代码正在打印额外的内存垃圾。我该怎么办呢? 在这段代码中,我试图删除10%的价格(将由用户插入)。
if (value == 1){
int price = 0;
int price_final = (price - (price - 0.01);
printf ("INSERT A PRICE >> ");
scanf ("%d", &price);
printf ("Final value %d", price_final);
}
答案 0 :(得分:1)
在获取int price_final = (price - (price - 0.01);
的值之前,您正在进行计算(price
。这就是代码应该是这样的:
if (value == 1) {
float price = 0, price_final;
printf ("INSERT A PRICE >> ");
if (scanf ("%f", &price) == 0) {
fprintf(stderr, "Invalid price");
exit(EXIT_FAILURE);
}
price_final = price - (price - 0.01);
printf ("Final value %f\n", price_final);
}
您还从float
中删除int
(0.01),这是未定义的,因此我将这两个变量都更改为float
。
此外,我建议您先使用fgets
阅读一行,然后使用sscanf
解析字符串:
char line[100];
fgets(line, 99, stdin);
int price;
if (sscanf(line, "%d", &price) == 0)
handle error
答案 1 :(得分:1)
您想要删除给定价格的10%用户。所以你的计算就是这样的 X = Y-(Y * 0.1);其中y是给定价格而x是新价格。 这是代码:
if (value == 1) {
float price = 0, price_final;
printf ("INSERT A PRICE >> ");
if (scanf ("%f", &price) == 0) {
fprintf(stderr, "Invalid price");
exit(EXIT_FAILURE);
}
price_final = price - (price * 0.1);
printf ("Final value %f\n", price_final);
}
答案 2 :(得分:0)
这有很多问题。
首先:
<input data-validate="number" value="<?php echo ($value != '0' ? $value : ''); ?>" class="form-control">
您正在对未定义的整数执行浮点运算。
第二
您在阅读用户价格之前计算新价格。这是荒谬的,int price_final = (price - (price - 0.01);
将始终在您的代码中假设price
。
第三
0
缺少结束括号&#39;)&#39;
可能会有更多,但这三个显然是显而易见的。