C语言笔记

1、c语言的数据类型

sizeof()这个运算符计算每一种类型占用的字节数

页面字节数是以64位系统计算的

字符型: char (1个字节)

整形: int (4)

short/ short  int (短整型)(2),long /long  int(长整型)(8),long /long  int(长整型)(8)

浮点型 :float(单精度)(4), double(双精度)(8)

布尔型:bool(1)

结论:每一种类型占用的字节数不一样,所以每一种类型占用的空间大小也不一样,取值范围也不一样。

取值范围:

char 类型占用一个字节的空间,也就是8个2进制。

char类型的数据范围是从0000 0000 ~ 1111 1111

如果表示的是非负数(无符号,unsigned):0~255 (0 ~2^8-1)

如果表示的是有符号数(可正可负,signed,可省略):-128~127(-2^7~2^7-1)

1、系统是如何保存正数和负数?

正数直接以2进制保存。

负数是以补码的方式保存的。补码是反码+1.反码就是正码按位取反(0变1,1变0)。正码就是负数的绝对值转换成2进制。

例如:5 ===》0000 0101

  -5===》1111 1011

2、系统又是怎么去判断这个数是正数还是负数?

如果是有符号数,是以最高位做为符号位,0表示正数,1表示负数

如果是无符号数,就没有符号位,所有的位都是数据位。

char类型的取值范围:(有符号的取值范围)

 

参考char类型的取值范围,求取short,int,long的取值范围。

short : -2^15 ~ 2^15-1====-32768~32767

  0~2^16-1====0~65535

 

int :-2^31 ~ 2^31-1

   0~2^32-1====0~4,294,967,295

 

long:-2^63 ~2^63-1

    0~2^64-1

补充:

短整型整数: 9H  89h

长整型整数:89L  777l

1、标准输入与输出:

格式化输出函数:printf函数

%c--字符型     %d-- 整形      %u --无符号    %o--八进制      % x/%#x--十六进制

%ld--长整型    %hd--短整型    %s--字符串    %p--地址类型    %f--浮点型

.....

\t--水平制表   ...

int i=9;

printf("%d",i);  //  %d 告诉计算机以何种形式输出  i 的值

格式化输入函数  :scanf

将键盘输入的数据以某种格式保存下来

int i;

scanf ("%d",&i);

//&取址符,表示获取变量 i 的地址

//从键盘获取到的数据以整型的格式通过i的地址然后保存到变量i中

注意:使用scanf函数的时候,双引号内你是什么样的设置,输入的时候会匹配

尽量不要在双引号内加入其他字符

补充:如果出现一个整数,编译器是默认为int的数值。那如果出现的是小数,默认为double类型。

           数据类型本身不占用内存,定义出来的变量占用内存

注意:一个字节8个位,是指第0到第7位。

2、进制之间的转换

计算机常用的是2进制,8进制,16进制

2进制:   有0和1组成的数字

       1=1=10

8进制:  有0~7组成的数字,在代码中以0开头,表示这是一个8进制数

     7+1=10

2进制与8进制之间的转换:每3位2进制转换成1位8进制,反之亦然

例如:2 进制数 101 000 111 —>8 进制 507

          8进制数 63547 —> 2进制 110 011 101 100 111

8进制转换成十进制

0777 ——> 0*8^3+7*8^2+7*8^1+7*8^0

   16进制数: 由0~9,a, b, c, d, e, f (大写也一样)组成的数字,在代码中以0x开头来表示

例如:  0x13  0x87  0x6d

       0x9+0x5=0xe

2进制与16进制之间的转换: 每4位2进制转换成一位16进制,反之亦然

例如: 2进制数 0101 0011 1111 0101 ——  > 16进制数  53f5

      16进制数9a5f6c——>2进制数1001 1010 0101 1111 0110 1100

 

8进制数0666 ===》10进制数 6*8^2+6*8^1+6*8^0 = 384+48+6=438

16进制数0x123 ===》10进制数 1*16^2+2*16^1+3*16^0=256+32+3=291

10进制数6666===》8进制数15012

                       ===》16进制数1a0a

需要掌握:数据类型,变量,常量,数值的存储,进制的转换。格式化输入输出函数的使用

补充:如果将一个小数赋值给整型变量,小数部分直接舍弃,只保留整数部分。

===========================================================================

运算符

1、算数运算符

+  -  *  /   %  ——》双目运算符

/  参与运算的对象是两个整数,得到的商是整数,如果有一个对象是小数,则结果是小数

例如;  5/2=2    5/2.0=2.5   5.0/2=2.5

% :参与运算的对象必须是整数。

++   --  ——》 单目运算符

运算逻辑: 运算对象不能是常量,放在对象前面的时候,是先自加/自减1,再参与运算。如果是放在对象的后面,是先参与运算,后自加/自减1.

A++ ——》A先参与运算,之后A=A+1

++A ——》 A=A+1,再参与运算

2:比较运算符

>  <  ==(等于号)  !=  >=  <=  ==>双目运算符

比较表达式的结果:成立为1,不成立为0

例如: 2>3 ==》0    6>=5 ==》1

3:逻辑运算符

&&  || ===》双目运算符    A && B  A || B

!===》单目运算符  !A

用1来表示逻辑真,用0来表示逻辑假。

在C语言里面,非0即真。

运算逻辑符:

&&(逻辑与并且):只有两个表达式的结果为真,整个逻辑表达式的结果才为 真。

例如: 1 && 6 ==》1  0 && 0.022 ==》0  

||(逻辑或,或者):只有两个表达式的结果为假,整个逻辑表达式结果才为假。||(逻辑或,或者):只有两个表达式的结果为假,整个逻辑表达式结果才为假。

4:位运算符:针对2进制位的运算

注意:如果最高位是符号位,左移右移不影响

5:赋值运算符:=  

 

6:逗号运算符:,

运算逻辑:从左往右依次运行每个表达式,将最后一个表达式的结果作为整个逗号表达式的结果。

注意:通常逗号是作为分隔符来使用的。

在C语言中,逗号运算符的优先级是最低的。

7:其他运算符:()  []  .  ->   sizeof()  

8:C语言中唯一一个三目运算符:A?B:C;

运算逻辑:如果A为真,执行B,否则执行C

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值