【发布时间】:2014-06-24 05:42:06
【问题描述】:
最近在 CCS 标准库中我看到了类似的东西
函数采用 unsigned int 参数。
delay(unsigned int)
这是这样使用的
delay(~(0));
现在如何解释 (~(0)) ?
如果我这样使用
printf("%d",(~(0)));
它是如何处理有符号整数的?无符号整数?长整数?还是无符号字符?
它如何依赖于系统? c 规范对此有何规定?
【问题讨论】:
-
在
printf中,这完全取决于格式说明符。但是你必须小心非法转换是未定义的(例如:整数到浮点数,反之亦然) -
在
printf()中,参数是什么无关紧要,甚至格式说明符是什么都无关紧要,因为可变参数函数的参数受整数提升的影响。printf("%d",(char)(~(0)))、printf("%d", (short)(~(0)))、printf("%d", (int)(~(0)))都将打印相同的类型,一个整数。
标签: c