[問題] 自動轉型別的問題
網路上有一個考題
unisgned int a = 6;
int b = -20;
(a+b)?puts(">6"):puts("<6");
Ans: >6
主要是考你 b 會自動轉成 unsigned int
-------------------------------------------------------------------------
我覺得怪怪的。
(-1)?puts(">6"):puts("<6") -->其實也會跑 > 6
(0)?puts(">6"):puts("<6") -->這樣才會跑 < 6
(1)?puts(">6"):puts("<6") -->會跑 >6
總結: 只有在非0時,才會是 true。跟if 和 while 一樣
這其實看不出來是考你自動轉型別。
我再寫一個
unisgned int a = 6;
int b = -20;
printf("%u\n", a+b); //出現一個很大的未知數字
printf("%d\n", a+b); //-14
這並沒有自動轉型別阿!?
我是不是誤會了甚麼?
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.68.215.61
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1534646181.A.EC7.html
推
08/19 10:41,
5年前
, 1F
08/19 10:41, 1F
→
08/19 11:38,
5年前
, 2F
08/19 11:38, 2F
→
08/19 12:09,
5年前
, 3F
08/19 12:09, 3F
推
08/19 14:20,
5年前
, 4F
08/19 14:20, 4F
※ 編輯: gn00618777 (219.68.215.61), 08/19/2018 15:48:24
※ 編輯: gn00618777 (219.68.215.61), 08/19/2018 15:48:33
→
08/19 15:49,
5年前
, 5F
08/19 15:49, 5F
推
08/19 16:15,
5年前
, 6F
08/19 16:15, 6F
→
08/19 16:15,
5年前
, 7F
08/19 16:15, 7F
→
08/19 16:17,
5年前
, 8F
08/19 16:17, 8F
→
08/19 16:17,
5年前
, 9F
08/19 16:17, 9F
→
08/19 16:17,
5年前
, 10F
08/19 16:17, 10F
推
08/19 16:25,
5年前
, 11F
08/19 16:25, 11F