#include<iostream>
using namespace std;
int a=4;
int main(){
double a=2.3;
printf("%d,%f\n",a,a);
system("pause");
return 0;
}
全域變數 a 是int型, 本地變數 a 是double型。
根據本地變數覆寫全域變數的原則,結果應該是“2,2.300000”。
實際結果如下:

編譯器沒有任何warning。
請問各位大神這怎么分析?
uj5u.com熱心網友回復:
printf("%d,%lf\n",a,a);double型別用%lf格式輸出。
當全域變數名和區域變數名同名時,區域變數名屏蔽全域變數,即全域變數無效;
uj5u.com熱心網友回復:
請參考double型別在記憶體中的存盤 :https://blog.csdn.net/slience_j/article/details/51965009
uj5u.com熱心網友回復:
float和double型別的輸出時的格式說明符都是%f呀!float型會自動轉為double型,用%lf和%f結果都一樣的。
uj5u.com熱心網友回復:
要看編譯器吧,要不你自己試試,看看是否一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/76007.html
標籤:C語言
上一篇:新手求解
