c語言double型別printf問題
背景:今天在用c語言寫程式時遇到了一個問題:printf("%lf",double(r));竟然輸出亂碼(0.000000),瀏覽了幾十個網頁之後,大致找到了問題原因。
結論:在c語言中,double型別的讀入必須用"%lf";輸出必須用"%f"
解釋:double和float的精度是不同的,故儲存空間也是不同的,所以如果要讀入double型別,必須要用%lf來讀入,以免精度丟失。而輸出,由於printf中並無對%lf的嚴格定義,故使用%lf不一定會出現正確結果。那使用%f輸出又如何呢?由於c語言中的預設引數提升規則,%f輸出的不論是float還是double都會被提升到雙精度進行輸出,並不會有精度丟失。
如需更詳細解釋,請移步C語言官網檢視printf詳細使用規則。
相關推薦
c語言double型別printf問題
背景:今天在用c語言寫程式時遇到了一個問題:printf("%lf",double(r));竟然輸出亂碼(0.000000),瀏覽了幾十個網頁之後,大致找到了問題原因。 結論:在c語言中,double型別的讀入必須用"%lf";輸出必須用"%f" 解釋:double和float的精度是不
c語言的double型別printf %lf 顯示0.00000問題
在編寫c primer plus的課後程式題的時候遇到了問題:c語言的double型別printf %lf 顯示0.00000。。 於是在網上找到了答案。。 轉自:http://book.51cto.com/art/200901/106880
C語言基礎:printf列印基本資料型別彙總
/// data type unsigned char, data length 1 byte typedef unsigned char MS_U8; // 1 byte /// data type unsigned sh
c語言坑之printf緩沖區
tail multiply out ack splay 一次 fin eof lan 1 #include <stdio.h> 2 #include <pthread.h> 3 #include <semaphore.h> 4
c語言double類型的輸入
2.3 \n 結果 span code 最小 AS tdi std double輸入用 %lf ,而不能用 %f 今天在使用double類型輸入時先用了 scanf("%lf", &a),結果以%f輸出的時候都是0,以%g,%e輸出似乎是最小的double值 12
C語言基本型別
32位平臺下 C語言基本型別: 整型(int):4 位元組 取值:-231 ~ (231 - 1) 短整型(short):2 位元組 取值 :-215 ~ (215 - 1) 長整型(long):4 位元組 取值:-231 ~ (231 - 1) 浮點型 單精度型(float):4 位元組
C語言 資料型別輸入輸出函式(2018.11.17)
基本資料型別 5個方式瞭解基本型別 1、符號 2、位元組數 3、資料範圍 4、表示方法 5、運算方法 記憶體空間分配給變數,不是型別 指標型別:指標變臉中只能存放地址 空型別:主要用於資料型別的轉換和定義函式型別 void指標是萬用指標,萬用=無用,多數用於型別轉換後使用 限定性流程
C語言資料型別,運算子與表示式
1.C語言的關鍵字 32個關鍵字: auto:自動宣告 break:跳出當前迴圈 case:開關語句分支 &nbs
一、學習筆記,C語言—資料型別
目錄 資料型別 基本資料型別 資料型別 基本資料型別 bool型別 使用bool型別 需要引入<stdbool.h> 型別bool的值域 型別名
4. C語言 -- 資料型別和取值範圍
本部落格主要內容為 “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】 學習筆記,文章的主題內容均來自該課程,在這裡僅作學習交流。在文章中可能出現一些錯誤或者不準確的地方,如發現請積極指出,十分感謝。 也歡迎大家一起討論交流,如果你覺得這篇文章對你有所幫助,記得
C語言資料型別表示式相關知識(Linux)
#include<stdio.h> int main(int argc,char**argv) { printf(“Hello Word\n"); printf(“argv[%d],%s\n”,i,argv[i]); return 0; } 計算
C語言之型別修飾符
auto 預設修飾符 register: register int a; //限制變數定義在暫存器上的修飾符 用於定義一些快速訪問的變數 編譯器會盡量的安排CPU的暫存器去存放這個a,如果暫存器不足時,a還是放在儲存器中 取地址符&對register不起作
C語言 double int float 運算
原創 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> void main( ) {
C語言資料型別深度探測
C語言中的資料型別: 基本型別 – 整數型別 – 浮點型別 構造型別 – 陣列型別 – 結構體型別 – 共用體(聯合)型別 指標型別 空型別(void)
C語言資料型別
整形 Name Description Size* Range*signed: Range*unsigned: char Character or small integer. 1byte -128 to 127
c語言 儲存型別
c中的每一個變數和函式都有兩個屬性:型別(type)和儲存型別(storage class).儲存型別分別是auto(自動),extern(外部),register(暫存器),static(靜態) 1.auto 在函式體中定義的變數預設是auto. 當進入
資訊學奧賽系列課程:C++語言數量型別、變數和常量
C++語言基本資料型別: 在使用程式實現演算法的過程中,需要各種型別的資料,如:計算圓的半徑、周長、面積,描述 物體運動過程中的速度、時間、距離,購物時的數量、單價和總價等。 C++語言中,基本的資料型別有: 整型:int 包括正整數
C語言基礎教程 printf( )函式中的回車‘\r’與回車換行'\n'
今天完成了初級階段的學習,其實以前在開發微控制器的時候用過C語言,但是沒有系統的學過,所以再次學習感覺能夠查缺補漏。 C語言中的printf( )函式是一個很重要的函式。printf( )中的字元包含了三種: (1)以%開頭的格式控制字元 (2)以 \ 開頭的轉義字元 (3)普通字元 在printf
有關c語言資料型別轉換之char,unsigned char,unsigned short
這是一道朗訊的筆試題(我把一些相關資料彙總了一下,希望大家能進來廣泛的探討,不甚感激!) #include <stdio.h> int main() { char ca; unsigned char ucb; unsigned shor
C語言各型別大小,結構體大小 sizeof(struct A)
C語言型別大小總覽 編譯器pack指令 #pragma pack(n)——定義n位元組對齊 C++固有型別的對齊取編譯器對齊與自身大小中較小的一個 32位C++預設8位元組對齊。gcc編譯器預設4位元組對齊 static變數在靜態區,sizeof均不納入計算 在編譯階段