C语言中变量后面的f和lf有实际的作用吗?不加有区别吗? C语言中scanf("%lf",&f);中%后的l表什么意思...
C\u8bed\u8a00\u95ee\u9898%f\u548c%lf\u7684\u533a\u522b\u7531\u4e8e\u7cbe\u5ea6\u7684\u539f\u56e0\uff0c\u8f93\u51fa%lf\u548c%f\u7684\u6570\u636e\u4e0d\u540c\uff0c\u53ef\u80fd\u4f1a\u9020\u6210\u9519\u8bef\u3002
\u4e3b\u8981\u6709\u4e00\u4e0b\u56db\u70b9\u533a\u522b\uff1a
1\u3001\u4ee3\u8868\u7684\u6570\u636e\u7c7b\u578b\u4e0d\u540c
%f\u4ee3\u8868\u5355\u7cbe\u5ea6\u6d6e\u70b9\u578b\u6570\u636e\uff08float\uff09\uff0c%lf\u4ee3\u8868\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u578b\u6570\u636e\uff08double\uff09\u3002
2\u3001\u6709\u6548\u6570\u5b57\u4f4d\u6570\u4e0d\u540c
\u5355\u7cbe\u5ea6\u6d6e\u70b9\u6570\u6709\u6548\u6570\u5b57\u4fdd\u8bc16\u4f4d\uff0c\u90e8\u52067\u4f4d\uff0c\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u6570\u6709\u6548\u6570\u5b57\u4fdd\u8bc115\u4f4d\uff0c\u90e8\u520616\u4f4d\u3002
3\u3001\u6240\u80fd\u8868\u793a\u6570\u7684\u8303\u56f4\u4e0d\u540c
\u5355\u7cbe\u5ea6\u6d6e\u70b9\u7684\u8868\u793a\u8303\u56f4\uff1a-3.40E+38 ~ +3.40E+38\uff0c\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u7684\u8868\u793a\u8303\u56f4\uff1a-1.79E+308 ~ +1.79E+308
4\u3001\u5728\u7a0b\u5e8f\u4e2d\u5904\u7406\u901f\u5ea6\u4e0d\u540c\u4e00\u822c\u6765\u8bf4\uff0cCPU\u5904\u7406\u5355\u7cbe\u5ea6\u6d6e\u70b9\u6570\u7684\u901f\u5ea6\u6bd4\u5904\u7406\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u6570\u5feb\u3002
\u6709\u533a\u522b\uff0cfloat y=-789.124\uff1b printf("%f\n",y);
\u4e00\u822c\u4e0a\u9762\u8bed\u53e5\u8f93\u51fa\u7ed3\u679c\u4f1a\u4e0e-789.124\u6709\u5dee\u522b\uff08\u4e0d\u4e00\u5b9a\uff0c\u4f1a\u4e0e\u574f\u5883\u7b49\u6709\u5173\u7cfb\uff09\u3002
\u8fd9\u5c31\u662f\u6d6e\u70b9\u6570\u7684\u8bef\u5dee\uff0c\u56e0\u4e3a\u7cbe\u5ea6\u4e0d\u591f\uff0c \u800c\u52a0\u4e86printf("%lf\n",y);\u540e\u53ef\u80fd\u8868\u793a\u7684\u5c31\u66f4\u7cbe\u786e\u4e9b\uff08\u4f46\u662f\u4e5f\u4e0d\u80fd\u4fdd\u8bc1\u5b8c\u5168\u7cbe\u786e\uff0c\u53ea\u662f\u8bef\u5dee\u5c0f\u4e86\u800c\u5df2\uff09\uff0clf\u8868\u793a\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u6570\u683c\u5f0f
其中:
float,单精度浮点型,对应%f.
double,双精度浮点型,对应%lf.
在用于输出时:
float类型可以使用%lf格式,但不会有任何好处。
double类型如果使用了%f格式可能会导致输出错误。
在用于输入时:
double 类型使用了%f格式,会导致输入值错误。
float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。
所以在输入输出时,一定要区分好double和float,而使用对应的格式符号。
绛旓細C璇█涓%d,%nd,%f,%lf,%c,%o,%x %e杩欎釜鍑犱釜绗﹀彿鐨勮〃绀烘剰鎬濆涓嬶細1銆%a(%A) 琛ㄧず娴偣鏁般佸崄鍏繘鍒舵暟瀛楀拰p-(P-)璁版暟娉(C99)銆2銆%c 琛ㄧず瀛楃銆3銆%d琛ㄧず鏈夌鍙峰崄杩涘埗鏁存暟銆4銆%f 琛ㄧず娴偣鏁(鍖呮嫭float鍜宒oulbe)銆5銆%e(%E)琛ㄧず 娴偣鏁版寚鏁拌緭鍑篬e-(E-)璁版暟娉昡銆6銆%g(%G) 琛ㄧず...
绛旓細鍙堝叿鏈夋眹缂璇█鐨鐗圭偣銆傚畠鐢辩編鍥借礉灏旂爺绌舵墍鐨凞.M.Ritchie浜1972骞存帹鍑猴紝5銆1978骞鍚锛C璇█宸插厛鍚庤绉绘鍒板ぇ銆佷腑銆佸皬鍙婂井鍨嬫満涓婏紝瀹冨彲浠ヤ綔涓哄伐浣滅郴缁熻璁¤瑷锛岀紪鍐欑郴缁熷簲鐢ㄧ▼搴忥紝涔熷彲浠ヤ綔涓哄簲鐢ㄧ▼搴忚璁¤瑷銆6銆佺紪鍐欎笉渚濊禆璁$畻鏈虹‖浠剁殑搴旂敤绋嬪簭銆傚畠鐨勫簲鐢ㄨ寖鍥村箍娉涳紝鍏峰寰堝己鐨勬暟鎹鐞嗚兘鍔涳紝涓嶄粎浠呮槸鍦...
绛旓細lf\n鍜%f\n鐨勫尯鍒负锛氳緭鍏ヤ笉鍚屻佽緭鍑轰笉鍚屻佺簿搴︽崯澶变笉鍚屻備竴銆佽緭鍏ヤ笉鍚 1銆%lf\n锛%lf\n杈撳叆鏁版嵁鏃惰姹傛槸float绫诲瀷銆2銆%f\n锛%f\n杈撳叆鏁版嵁鏃惰姹傛槸double绫诲瀷銆備簩銆佽緭鍑轰笉鍚 1銆%lf\n锛歞ouble绫诲瀷浠%lf\n鏍煎紡杈撳嚭鏁版嵁鏃朵笉浼氳嚜鍔ㄨ浆鎴%lf\n鏍煎紡锛屼細瀵艰嚧杈撳叆鍊奸敊璇2銆%f\n锛歠loat绫诲瀷浠...
绛旓細1銆%f 鏄緭鍑 float 鍨鍙橀噺锛%f 鏄緭鍑 double 鍨嬪彉閲忥紱%Lf 鏄緭鍑 long double 鍨嬪彉閲忋2銆佸湪C璇█涓锛屽浜庢暟鍊肩被鍨嬪彧鏈夐氳繃printf绫诲嚱鏁拌緭鍑鸿繖涓绉嶆柟寮忥紝姣斿printf, sprintf, fprintf绛夈傝繖绫诲嚱鏁拌緭鍑烘椂瑕佹眰鏈夋牸寮忕鍙凤紝鍏朵腑long double鐨勬牸寮忕鍙蜂负%Lf銆備互涓嬫槸涓涓畝鍗曠殑鍙傝冧唬鐮侊紝杈撳嚭鍒版爣鍑嗚緭鍑...
绛旓細3141.59+0.000001 = 3141.590001 瀛樻斁杩欎釜缁撴灉闇瑕10杩涘埗 鍗佷綅鏈夋晥鏁板瓧绮惧害銆俧loat 鍨嬪彧鏈 32浣2杩涘埗闀垮害锛岀簿搴﹀彧鑳借揪鍒 6-7浣 鏈夋晥鏁板瓧绮惧害銆傝繍绠楀拰杈撳嚭鏈夋埅鏂宸拰鑸嶅叆璇樊锛屽彲闈犻儴鍒嗘槸 3141.590銆備綘鍙互鏀圭敤 double 鍨鍙橀噺锛岃緭鍑 鐢 %lf 鎴 %14.7lf ...
绛旓細c锛氭槸瀛樺彇鎴栬呰緭鍑轰竴涓瓧绗 d:鏄瓨鍙栨垨鑰呰緭鍑轰竴涓暣鏁 lf: 鏄瓨鍙栨垨鑰呰緭鍑轰竴涓暱鏁村瀷灏忔暟銆
绛旓細鍙岀簿搴鍙橀噺鐨鏍煎紡绗︾敤鈥渓f鈥濄
绛旓細f 鏄诞鐐瑰瀷锛堝崟绮惧害锛夛紝鍗4瀛楄妭 lf 鏄诞鐐瑰瀷锛堝弻绮惧害锛夛紝鍗8瀛楄妭 scanf 鎸夋牸寮忓寲瀛楃涓叉寚瀹氱被鍨嬪皢鐢ㄦ埛杈撳叆鐨勫唴瀹硅浆鎹紝鐒跺悗鍐欏埌鎸囧畾鐨勫湴鍧銆備袱绉嶇被鍨嬪瓨鍌ㄦ柟寮忥紝鎵鍗犲唴瀛樹笉鍚岋紝绫诲瀷閿欒鑷劧浼氬緱鍒伴敊璇粨鏋溿
绛旓細lf鏄C璇█涓double鐨勬牸寮忓瓧绗︼紝鐢ㄤ簬鏍煎紡鍖栬緭鍏ヨ緭鍑恒俤ouble涓哄弻绮惧害娴偣绫诲瀷锛屽崰8瀛楄妭绌洪棿銆傚畾涔変竴涓猟ouble鐨勫彉閲鍙互鍐欎綔锛歞ouble a;杈撳叆璇彞鍙互鍐欎綔:scanf("%lf", &a);杈撳嚭璇彞鍙互鍐欎綔锛歱rintf("%lf",a);杩欓噷鐨刾rintf鍜scanf涓紝灏辨槸%lf鐨勭敤娉曚簡銆
绛旓細瀹為獙浜岋紝妫鏌%lf闇瑕佽鍙栧嚑涓瓧鑺 int a=0, b=0, c=5;printf("%lf,%d\n", a, b, c);杈撳嚭缁撴灉锛0,5 缁撹锛%lf涔熻鍙8涓瓧鑺傦紙涔熻鍜屾満鍣ㄤ綅瀹芥湁鍏筹紝鎴戞槸32浣嶇殑鏈哄櫒锛夊疄楠屼笁锛屾鏌rintf璇诲彇float绫诲瀷鏁版嵁 float a=0.0f;int b=5;printf("%f,%d\n", a, b);杈撳嚭缁撴灉锛0.0,5 ...