推 zha0::D 124.8.71.239 05/31 01:32
※ 引述《quota@kkcity.com.tw (大改名片檔)》之銘言:
: 基本上
: 第一個結果是對的,因為這是int型態變數,c語言不會自動轉換
: 可是問題在於第二個..為何會出現小數點?
基本上
第一個結果 (1.a) 也是錯的, 被印出來的是堆疊空間的數值
多印個幾次, 數值會相對變化
至於第二個結果 (2.a), 那是因為前面計算處理過 float b
加上有呼叫 printf(), 所以此值尚在堆疊中未被破壞, 因此才會印出 17.5
不然, 可以在印出 2.a 之前插入一行 printf("b=%f", b=0);
這時, 第二個結果 (2.a) 就會印出 0
這已經是老問題了 冏
--
看的懂 x86 組語的話, 使用 gcc 編譯時可以加個參數 -S
產生反組譯碼 (AT&T 格式) 出來看就知道了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.86.136.1