今天遇到一个问题:
-
char a = 0xff;
-
-
if (0xff == a){xxx;}
谁知xxx里面的东西,怎样都不运行。然后再仔细关注了下。发现a的值转换成int后,成了0xffffffff。在运算符两边的类型在操作之前都会转换为一个相同的类型这个就前提,而对这里而言,int型就足够容纳这两个数字了。但是为什么a提升成int之后,值却变成了0xffffffff.
C语言当中如何定义类型并不是最重要的,对于变量而言,重要的如何使用这个变量。因为变量会根据使用的方式来隐式转换。
这里仍不清楚,望知情人解答。
阅读(1205) | 评论(0) | 转发(0) |