[問題] 變數型態的問題

看板C_and_CPP (C/C++)作者 (The Gazer)時間12年前 (2013/09/28 18:46), 編輯推噓0(0011)
留言11則, 3人參與, 最新討論串1/1
根據書上所講若並未於 float a=1.0; 後方加上f 定義為float值 則系統預設為 double 但是我用了sizeof 出來一樣是float的4 這是為什? long b=1; 後面書上寫了 不用加上L 也沒有差 這正確嗎? 還有剛剛打了 float a=5; 並不是5.0 這輸出是正確的 若是 float a=5/3 這輸出就是了0 這是因為5/3 並沒有打上.0而讓他成為浮點數型態 而算出來又出現浮點 所以指派回去a時出的問題嗎? 另外我看的是begining c++ 這本適合 新手閱讀嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.162.233

09/28 19:29, , 1F
5/3 是整數除法, 結果是 1 才對 (餘2被拋棄)
09/28 19:29, 1F

09/28 19:29, , 2F
怎麼你會說 float a=5/3; 的 a 是 0 呢?
09/28 19:29, 2F

09/28 19:31, , 3F
你的其他疑問則是源自compiler自動做型別轉換的結果
09/28 19:31, 3F

09/28 22:10, , 4F
S 大解釋的很清楚,等號兩邊其實是不一樣的資料型態
09/28 22:10, 4F

09/28 22:11, , 5F
float a=5/3,等號右邊是整數,經過等號賦值,
09/28 22:11, 5F

09/28 22:13, , 6F
計算完成之後,被編譯器做資料轉換,才放入 a 中,
09/28 22:13, 6F

09/28 22:15, , 7F
不過,此時 a 經該只會是 1.0 ,你大概要去查一下
09/28 22:15, 7F

09/28 22:16, , 8F
之後有沒有誰改變了 a 的值。
09/28 22:16, 8F

09/28 22:18, , 9F
還有立即常數基本是 int 型態,若加上 L 如 1L,
09/28 22:18, 9F

09/28 22:19, , 10F
則型態變成 long,一樣是個整數。(印象是這樣)
09/28 22:19, 10F

09/28 23:35, , 11F
整數常數預設是int,數值放不下會自動升級成long或ll
09/28 23:35, 11F
文章代碼(AID): #1IHhEE1V (C_and_CPP)
文章代碼(AID): #1IHhEE1V (C_and_CPP)