[问题] 自动转型别的问题

楼主: 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