gpt4 book ai didi

c - strtof() 在 C 中产生奇怪的结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:08 24 4
gpt4 key购买 nike

首先,使用标志 -Wall、-ansi、-pedantic 进行编译。没有警告或错误。并且没有任何调试有帮助。

基本上我的代码工作正常但是当我使用 strtof() 将标记从字符串转换为 float 时返回非常奇怪和意外的结果

下面的代码部分是:

 printf("token is %s\n", token);
newstockdata->unitPrice = strtof(token, NULL);
printf("price is %d\n", newstockdata->unitPrice);

newstockdata 被分配到正确的大小:unitPrice 是一个浮点变量:第一个 printf 语句打印“150.00”:第二个 printf 语句打印“0”,但在几次迭代后它返回一个非常长的一致数字。有什么帮助吗?

最佳答案

问题就在这里,假设unitPrice是一个float:

printf("price is %d\n", newstockdata->unitPrice);

要打印float,您必须使用%f 说明符。否则,这是未定义的行为,任何事情都可能发生。


对于您看到的不断变化的值,一个可能的解释可能是您的系统将不同寄存器中的 float 传递给整数。接收 %dprintf 正在查找一个从未设置的寄存器,因此您看到的是之前某个操作遗留下来的任何值。

这实际上很常见,here is an example - %esi 用于int%xmm0 用于浮点值。

关于c - strtof() 在 C 中产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com