[英]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.