unsigned keyword

dunsigned char,无符号字符类型,取值范围是(0-255)。看下一个例子:
int main()
{
unsigned char i=255;

printf("%d/n",i);
printf("%d/n",++i);

return 0;
}

i加1后,值不是256,而是0

就是没有符号的意思

说白了,就都是正数
由于在计算机中,整数是以补码形式存放的

所以根据最高位的不同
如果是1,有符号数的话就是负数拉
如果是无符号数,则都解释为正数,同时在相同位数的情况下,所能表达的整数范围变大 

 

another sample:

there are two int variables: a and b,don't use "if", "?:", "switch" or other judgement statements, find out the biggest one of the two numbers.

Method 1:

int max = ((a+b) + abs(a-b))/2

Method2:

int c = a - b;

char * strs[2] = {"a bigger", "b bigger"};

c = unsigned(c) >> (sizeof(int) * 8 - 1);  //1 or 0

printf("%s", strs[c]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值