C——mooc笔记之数据类型及运算篇(6)

1.概述

基础类型:

  • 整数(二进制数及其补码):char < short < int < long < long long1( 逻辑:bool
  • 浮点数(编码):float、double、long double
  • 指针

自定义类型

2.类型的区别

1. 整数类型:(区分这么多,用int就够了)
  • 计算机中的表达:我们以什么样的方式看待它
  • 数的范围:
    对于一个8位:00000000~11111111
    11111111 ~ 10000000——> -1 ~ -128(我们当它是纯二进制数,就是255;当它是整数,它就是-1)
    00000001 ~ 01111111——>1 ~ 127
  • 整数的输入和输出:只有int 和long long 两种类型
    %hd:short
    %d:int;
    %u:unsigned:
    %ld:long long;
    %lu:unsigned long long
    int 字节数以下的变量如果用%u,超出最大二进制数即为int的-1
  • 如果一个八进制数想要输出十进制,前面加0;十六进制前加0x。
  • 如果想要输出八进制的数用%o,输出十六进制的数用%x(有字母出现,小x即输出小写字母,大X即输出大写字母)
2.浮点类型(没啥情况用double)
类型字节范围有效数字输入输出
float410^±38 0 ±inf(±无穷)nan(不是有效的数字)7%f%f,%e(输出科学计数法)
double810^±308 0 ±inf(±无穷)nan(不是有效的数字)15%lf%f,%e
  • 科学计数法表示形式1^-10=1E-10
  • 如果想要确定小数点位数,输出时采用“%.16f”,16表示想要保留的位数,遵循五舍六入
  • 无穷大可以用浮点数表达,0.0可以做分母
  • 浮点运算没有精度,不能比大小,如果非要比较大小用fabs(f1-f2)<1e-8 fabs表示取绝对值
  • 带小数点的字面量是double而非float,如果想表达float,小数后面需要加f或F
  • 浮点数的内部表达:编码形式:1bit表达±数,11bit表达指数部分是多少,后面bit 表达分数部分是多少,CPU中有专门的硬件
3.字符类型
  • char(character):可以用单引号表示字符字面量、d=‘1’
  • %c输入输出字符
  • 输入字符“1”给char c
    scanf(“%c”,&c);——>1
    scanf(“%d”,&i);c=i;——>49
  • 注意空格也是一个字符
  • ASCII码
  • 逃逸字符"比如双引号之间还想打双引号就用\加上”
4.逻辑类型
  • bool:#include<stdbool.h>
    之后可以使用true和false

3.运算

1.四则运算

加减乘除

2.关系运算

比较大小 注意==

3.赋值运算
4.逻辑运算
符号含义判断举例
!age<20
&&有假则假判断字符是否为大写字母c>=‘A’&&c<=‘Z’
11有真则真
  • 优先级!>&&> ||
  • 短路:只要左边可以判断就不会做右边
    所以不要把赋值和复合赋值写进表达式中
5.条件运算
  • count = (count>20)? count-10 :count+10
    条件?满足:不满足
  • 不要用嵌套的条件表达式
6.逗号运算
  • 优先级比赋值还低
  • 在for 中使用eg:for(i=0,j=10;i<j;i++,j–)

小技巧

  1. sizeof()是一个j静态运算符(不参与运算),可以给出某个类型或者变量在内存中所占据的字节数。(1字节=8bit)
  2. if char c=255 不想以补码的形式输出-1,则前面需要添加unsigned (副作用:扩展了数的范围),if 一个字面量常数想要表达自己是unsigned——255U/u

补充

  1. CPU(Reg寄存器:宽代表字长:反映为int ,即int 就是用来表达寄存器的)——总线——RAM内存
  2. 补码:00000001+11111111(-1)=100000000(1多出来被丢掉=0)
    对于a,其补码为0-a,2^n-a,n为类型的位数
  3. 补码的意义:拿补码和原码可以加出一个溢出的“0”。计算时可以把它当做一个纯二进制数进行计算。eg:127+1=-128;
  4. 强制类型转换:大转小(类型)值 eg:(int)10.2把double转为int.优先级高于四则运算

  1. 前三个黄色的是C99的类型 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值