C语言学习day10(操作符与关键字)

不能创建临时变量(第三个变量),实现两个数的交换。
这是上节课的一道思考题,我进行了以下尝试。
int main()
{
  int  a = x
  int  b = y
在这里,因为不允许使用第三个变量,所以我要想办法通过运算和操作符使a和b的值互换。
a = a+b 此时 a值为x+y
b = a-b  此时 b值为x+y-y=x
a = a-b
这样两个数的值就互换了
}
不过,课程上给出的答案则是我较为陌生的按位异或^
a = a^b ;
b = a^b ;
a = a^b ;
这里和数字对应补码的二进制位数有关,通过时钟,我简单了解了补码的意义,在计算机计算的过程中,没有减法,于是需要通过加法来实现减法,就如同8点到6点,可以减去两小时,也可以通过加上10小时来替代不存在的-2。
在二进制中,整数情况下,最左边一位表示这个数字的正负,0为正,1为负。而对于正数,它的原码,反码和补码都相同,而负数的反码是它的符号位不变,其他所有位数取反,即0变1,1变0,补码在反码基础之上再+1.过程中,最左边的0或1保持不变。
剩下的是条件操作符,逗号表达式和各种下标
exp1 ? exp2 : exp3
这里是三个语句并对语句1进行判断,1成立,结果为2的运算结果,1不成立,则结果为3的运算结果。
exp1 , exp2 , exp3, ... , exp x
而逗号就是很常用的分割方式,从左往右计算,整个语句的结果为最后一个计算的结果,即exp X的结果。
下标在函数和数组的学习中已经了解过,不再赘述。
接下来是常见关键字,其中有很多老熟人,比如float int if 等等表示数值类型和语句的关键字。
auto  break   case  char  const   continue  default  do   double else  enum  
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while
这里的extern在之前函数的学习中使用过,通过声明,我们只需要写一次函数,就可以在其他源文件中使用了。而与此相反的static修饰的全局变量和函数,被限制在其所在的源文件中,其他源文件无法调用这个相同的变量。

 

 而被static修饰的局部变量,生命周期被拓展了,使其可以在范围外被使用,也就是上图所说的改变了存储区域。

typedef则是可以把复杂类型简单化的工具,这里通过名称的简化进行初步了解。

signed和unsigned则比较简单。

二进制目前是最为困难的一个点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值