[問題] 自動轉型別的問題

作者: gn00618777 (非常念舊)   2018-08-19 10:36:17
網路上有一個考題
unisgned int a = 6;
int b = -20;
(a+b)?puts(">6"):puts("<6");
Ans: >6
主要是考你 b 會自動轉成 unsigned int
作者: jerryh001   2018-08-19 10:41:00
有轉 -20變uint就是很大的數字沒錯
作者: Lipraxde (Lipraxde)   2018-08-19 11:38:00
我推薦使用typeof看型別
作者: xam (聽說)   2018-08-19 12:09:00
現在compiler會噴warning, 然後設定把warn當error,要你別醬
作者: sarafciel (Cattuz)   2018-08-19 14:20:00
非零的時候才會是false的話 你肯定是誤會了XD
作者: gn00618777 (非常念舊)   2018-08-19 15:49:00
抱歉 我手誤 應該是只要非0 都是 true
作者: leo850319 (不要說話)   2018-08-19 16:15:00
第一個要考轉型別的話 應該是要寫 ((a+b) > 6) ? puts(">6") ... ?前面是一個布林運算式第二個的話 printf它會根據你給個%d %u來決定變數輸出的時候的型別是什麼 你給%d 它就把存在那個變數的記憶體值當作int第一個的考法也有直接比較 (a > b )這樣的

Links booklink

Contact Us: admin [ a t ] ucptt.com