-
這應該是資料結構的問題。
在 k&rc 中,float 值在用於表示式或用作引數之前會自動轉換為 double 型別。 ANSI C 通常不會自動將浮點數轉換為雙精度值。 有些程式假設 float 引數會轉換為 double,為了保護大量此類程式,printf() 函式的所有 float 引數都會自動轉換為 double。
只要輸入浮點數的範圍,那麼轉換成雙精度後,記憶體中這個資料的二進位下半部分(即後半部分)就是0。 而這個資料被放到堆疊裡,所以當以 %d 格式讀取時,只讀取接下來的 4 個位元組的資料,所以出現次數為 0,你試著多輸入幾個小數位,比如 input 等,值不是 0,它是乙個大數,很可能是負數。
-
根據您的程式,變數 b 不使用,並且 a 的資料型別沒有改變,a=static 強制轉換將浮點變數分配給整數變數,並且仍然是乙個整數變數。
-
printf("%d",ftemp);輸出型別不正確,應為 %f
printf 在輸出時不會自動轉換型別。 您必須手動轉換 (int)ftemp
-
你要問的應該是為什麼要使用 printf("%d",ftemp),無論輸入什麼數字,它總是輸出 0,對吧?
我不知道這個,我把 ftemp 改成乙個特定的浮點數,他不輸出零,我不知道他是怎麼計算的。
-
在 C 語言中,可以強制型別化或自動型別化使用整數的浮點轉換,例如:(int) a = .
1.強制型別轉換。
強制型別轉換是通過型別轉換操作實現的。 它的一般形式是:(type specifier) (expression),其作用是將表示式的結果強制轉換為型別說明符所表示的型別。
例如:(double) a 將 a 轉換為 double,(int)(x+y) 將 x+y 的結果轉換為整數。
2.自動型別轉換。
1)進行算術運算時,低型(短位元組)可轉換為高型(長位元組);例如:int 型別轉 double 型別,char 型別轉 int 型別等。
2)在賦值表示式中,等號右側表示式的值型別自動隱式轉換為左側變數的型別,並將值賦值給它。
3)呼叫函式時,將引數的值傳遞給引數,系統會先將引數的值型別隱式轉換為引數的型別,然後將值賦值給引數。
4)當函式有返回值時,系統會先將返回表示式的值型別隱式轉換為函式的返回型別,然後將值賦值給呼叫函式的返回值。
-
整數是計算機中使用的乙個基本術語,是指沒有小數部分的資料。 整數可以用十進位、十六進製或八進位符號指定,前面可以有可選符號(-或+),包括整數常量和整數變數,而整數變數又包括短整數、基本整數和長整數,分為有符號和無符號版本,這是一種智慧型的計算方式。
字元型別包括字元常量和字元變數。 字串常量是用一對雙引號括起來的字元序列。 字元變數的值是字元常量,即單個字元。
字元變數的型別說明符是 char。 字元變數型別描述的格式和寫入規則與整數變數的格式和寫入規則相同。
浮點數使用指數來允許小數點的位置根據需要向上或向下波動,使其能夠靈活地表示更廣泛的實數。
這種資料型別類似於單精度資料型別(float),但精度高於float,編譯占用的記憶體空間根據編譯器的不同而不同,是C中表示實變數的變數型別 C++。
-
整數 int 可以理解為整數字元,這意味著您沒有輸入數字。
浮點數是帶有小數點的數字。
雙倍是小數點後一位。
-
Integer:簡單整數(分為 short、unsigned、int、long)。
例項:1545、-4444、-979
字元:表示字元(分為字元、無符號字元)。
示例:a、b、c、d
浮點型 雙精度浮點型:表示小數(雙精度更準確)(分為雙精度、浮點數、長浮點數、長雙精度)。
例:
-
char 字元,占用 1 個位元組。
short integer,占用 2 個位元組。
int integer,占用 4 個位元組。
long 是乙個長整數,佔 4 個位元組。
上述資料為整數資料,不能包含小數點。
以下是實際資料,以小數點為單位。
float 單精度浮點型別,占用 4 個位元組。
double,8 個位元組。
-
從小到大排序:字元型別,例如'a' 'b'依此類推,請注意,對於乙個位元組,它必須是單引號。 int 是乙個普通的數字,比如 123 33,具體大小取決於編譯器,通常為兩個或四個位元組。
Long long integer,顧名思義,是乙個整數擴充套件版本,位元組大小大於 int。 float 單精度實數,可以簡單理解為小數,包括雙精度實數,是單精度的擴充套件版本,占用的位元組數最大。 具體使用請參考相應的說明書。
-
在C語言中,資料型別分為整數、實心和指標型別(以下都是用32位作業系統表示的):其中整數分為char、short int、long int、long long,各種型別的使用,前面可以用unsign來表示無符號字元型別,表示的大小為-128 127, 大小為 1 個位元組,其中 0 - 127 編碼為 asc 程式碼 short int short int - 65536 65535 2 位元組長 int Shaping - 超過 20 億 超過 20 億 4 個位元組長 long long 8 位元組長 int 通常寫成 int 表示 CPU 的字長,作業系統中 CPU 的字長為 32 位, 即 4 位元組實現(浮點數)分為浮點數和雙精度:浮點 6 7 個有效數字 4 位元組雙精度 15 16 個有效數字 8 位元組 在現代 CPU 中,有乙個專門用於浮點數運算的協處理器,乙個
32 位 CPU 的記憶體定址範圍從 32 個零到 32 個 1,總共 4 GB,因此 32 位作業系統最多僅支援 4 GB 記憶體。
-
這是LZ親眼看看。
-
有幾種方法可以對 C 語言進行捨入:
1. 直接為整數變數賦值。 如:
int i = ;或者 i = (int);
此方法使用要用於您的問題的小數部分。
2.C C++中的整數除法運算子“”本身有乙個整數函式(int int),下面介紹的整數函式的返回值為double。 整數除法將正數的小數部分四捨五入,可用於您的問題。 但是,負數的整數除法取決於所使用的 C 編譯器。
3.使用地板功能。 floor(x) 返回小於或等於 x 的最大整數。 如:
floor( = 2
floor( = -3
4. 使用 ceil 函式。 Ceil(x) 返回大於 x 的最小整數。 如:
ceil( = 3
ceil( = -2
floor() 四捨五入為負無窮大,floor( = -3;ceil() 四捨五入為正無窮大,ceil( = 函式可用於您的問題。
5、int b = (int)a;int c = (int)(a+; 圓。
-
C 語言中沒有捨入,在將浮點型別轉換為整數時,僅保留小數點前的值。
-
float ftemp;
不要遵循 =0;因為一旦你給 ftemp 分配了乙個值,它就不是一種通過鍵盤書寫的方法。
允許,因為空間已被占用。 這不是像 a=b+c 這樣的表示式的賦值。
頭暈,你要不要我給你源**,你直接複製?
這取決於你!
#include
void main()
輸入乙個隨機數,按回車鍵,然後檢視結果。
-
可以通過強制型別轉換或在賦值過程中自動完成轉換。
鑄造型別轉換。 C 提供了乙個強制型別轉換器,可以表示為 (type),它有乙個從右到左的連詞型別,用法示例是“(type) variable”,那麼對應的變數就換成括號裡的型別,所以當你想把浮點型別轉換成整數時,可以在括號裡用 int:
如果將浮點變數直接分配給整數,則該變數將自動轉換為整數:
但請注意,當浮點變數轉換為整數時,小數部分將被丟棄,但它不遵循捨入原則,如果浮點型別的值太大而無法超過整數可以容納的範圍,則結果是不確定的。
-
在 C 語言中將無符號整數轉換為浮點數的方法如下:
unsigned
intx=123;
1.輸出鑄件,如:
printf("%f",x
此輸出異常,因為 %f 與 x 的型別不同。
printf("%f"Chang 伴隨型別,float)x 強制轉換為浮點型別,輸出正確。
2.儲存在相應的變數中,例如:
floatfval;
fval=x
系統隱式轉換。
由於浮點數的最大數量為 7 位,因此並非所有整數都可以用浮點變數表示,因此最好使用 double 型別來儲存任意整數。
printf("%f",fval
輸出正常。 double
dval;dval=x
系統隱式轉換。
printf("%f",dval
輸出正常。
-
有符號字元的取值範圍是 -128 127,但是字元的 ASCII 碼怎麼可能沒有負數呢? 自己編乙個字段看看有沒有,把整數(正負)換成字元型別,只知道有255個字元值,不記得手的脊是什麼字了! 有些字元是不可列印的,你要知道這個東西......
畢燒。 至於 unsignedchar,我們也來彌補一下,記得使用無符號字元。
-
轉換最簡單的例子之一,我希望滾動襯衫可以幫到你。
#include
voidmain()inta;
scanf("%d",&a);
printf("%f",(float)a);