我的C语言草稿

补码

  • 本质上来看,补码的意义就是拿补码和原码可以加出一个溢出的0。
  • 因此,00000001的补码就是11111111。在11111111被当作纯二进制看待时,是十进制的255,被当作补码看待时则是-1。
  • 同理,对于-a来说,其补码就是0-a,实际是2^n-a,n是这种类型的位数
  • 好处就是计算时,不需要调整加减,全部都是加法(+补码就相当于-原码)

unsigned

  • unsigned使得整数型不以补码的形式表示负数,是其只有0和正整数部分。所以使用unsigned正整数表达部分范围扩大一倍,但是不能表达负数了。
  • 如果一个字面量常数想要表达自己是unsigned,可以在后面加u/U:255U。
  • 同理,想表达自己是个long,后面加L。
  • unsigned的初衷不是为了扩展数能表达的范围,而是为了做纯二进制运算,主要是为了移位。

%d: int 和小于 int 范围的(char、short)都以 int 输出
%ld:long long
%u:unsigned
%lu:unsigned long long

想要输出8进制:用 %o 或 %O
想输出16进制:用 %x 或 %X 

(小写的x输出小写的字母,大写的输出大写)

  运算符   描述  示例                              结果
      !  逻辑非     !a                    a的true或false反转
    &&  逻辑与   a&&b        只有a&b都是true时结果才是true
     ||  逻辑或   a||b        只有a&b都是false时结果才是false
//格式:(类型名称) 值

(int)10.2;
(short)32;

/*但需注意安全性,小的变量不总能表达大的量。
如:
    printf("%d\n",(short)32768);
    
    因为short最大范围是32767,所以会被转化为-32768*/
优先级运算符结合性
1()从左到右
2!,+,-,++,–从右到左(单目的+和-)
3*,/,%从左到右
4+,-从左到右
5<,<=,>,>=从左到右
6==,!=从左到右
7&&从左到右
8||从左到右
9=,+=,-=,*=,/=,%=从右到左

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值