C语言基础笔记(3)

整数在内存中储存的时补码

一个整数的二进制表示有3种:

原码 如(-1的原码):10000000000000000000000000000001

反码 如(-1的反码):11111111111111111111111111111110

补码 如(-1的补码):11111111111111111111111111111111

反码是由原码的符号位(符号位就是第一位)不变,其他位取反。

补码就是在反码的基础上+1。(最重要的是,这仅仅是负数的算法,如果为正整数的话,它的原码,反码,补码都相同)

注意:符号位即第一位只有1和0,分别代表负和正。

前置++(--)-----先++(--),后使用。

后置++(--)-----先使用,后++(--)。

--与++一样的计算规则:

例如,a=10,b=++a,那么a就要先加,所以a=11,那么b也等于11。

当a=10,b=a++,那么a就要先使用(就是先给b赋值),但是a之后还要加一下,所以a=11,而b=10.

&&---逻辑与,如 a&&b,两个都要满足

||---逻辑或 ,如a||b,两个只要满足一个

条件操作符(三目操作符)

?:

如:exp1 ? exp2 : exp3

它的意思是  

当exp1成立,那么exp2计算,且整个表达式的结构是:exp2的结果。

当exp1不成立时,那么exp3计算,整个表达式的结构就是:exp3的结果。

逗号表达式,是从左往右依次计算的,且整个表达式的结果是最后一个表达式的结果

注意:起到决定作用的是最后一个表达式的结果。

如:int a =0;

int b = 3;

int c =5;

int d = (a=b+2,c=a-4,b=c+2);

那么它得到的结果就是,先将前面的值算出来,用得到的数据带入最后一个表达式,最后的表达式算出来的就是int d 的结果等于3。

使用数组访问元素的时候所使用的【】就是下标引用操作符

如:int arr【10】= {1,2,3,4,5,6,7,8,9,10};

printf(“%d/n”,arr【5】);

打印出来就是 6 。

typedef-----类型重定义。

例如:unsigned int num = 100;

将它简单化,重命名,typedef unsigned int u_int;

u_int num2 = 100;

这两个表达式一模一样。仅仅是更换了名称。

由static修饰的局部变量(创建后不会销毁),改变了局部变量的生命周期(本质上是改变了变量的存储类型)

注意:由static修饰的全局变量(函数也是一样),使得这个全局变量(函数)只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用(在整个工程中)。

使用define定义宏时,如果想要所定义的整个表达式而不是替换,应该将所定义的用()起来

如:#define ADD(x,y) x+y

printf("%d\n"4*ADD(2,3));它的结果是11(因为将ADD替换成了2+3,所以原式被换成了4*2+3=11),而不是20。

只有将它定义的表达式()起来才是整个接过而不是替换

例如:#define ADD (x,y)((x)+(y))

在进行上面的表达式:printf("%d\n"4*ADD(2,3));

它得到的结果才是20。

pa是专门用来存放地址的,在c语言中pa是指针变量。

在使用时,它的写法是 int*pa = &a;在这个表达式中,*的意思是,说明pa是指针变量(指针就是地址),而int说明pa的执行对象是int类型的。

如果想要从pa里面找到a,则是用*pa,这个*号表示解引用操作,*pa就是通过pa里面的地址,找到a。

例如:int a = 10;

int*pa = &a;

*pa = 20;这个操作将a改变成了20,再使用printf("%d\n",a);打印出来就是20,而不是原本的10。(间接改变)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值