簡體   English   中英

為什么strtof無法打印正確的浮點數?

[英]Why does strtof not print proper float?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
  char aaa[35] = "1.25";
  char* bbb = &(aaa[0]);
  char** ccc = &(bbb);
  float a = strtof(*ccc, ccc);
  printf("%f\n", a);
  return 0;
}

我上面編寫的代碼應該打印1.25 ,但是根據鍵盤(在線C編譯器),它不會打印1.25 在鍵盤上打印2097152.000000 這是鍵盤鏈接

我在這里做錯了什么?

鍵盤具有舊版本的gcc,可能是標准C庫的舊版本。 顯然,您包含的頭文件未聲明strtof (在C99中添加了strtof 。)

嘗試將在線服務與后稀釋版本的gcc一起使用。 或顯式添加正確的聲明:

float strtof(const char* ptr, char** end_ptr);

發生的事情是,沒有聲明,編譯器會將函數的返回類型默認為int 由於該函數實際上返回浮點數,因此該浮點數將被解釋為(不轉換為)整數,然后將該整數轉換為浮點數。

不會產生警告,可能是因為-Wall不在編譯器選項中,和/或正在使用的C標准允許使用未聲明的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM