《C和指针》读书笔记(4)

声明:该读书笔记摘抄自《C和指针》——Kenneth A.Reek (著)    徐波(译)。为了克服自己走马观花,提高阅读和学习效率,决定将自己在读书过程中遇到的一些知识点加以摘抄和总结备忘,在此感谢原书作者和翻译。


一、关于位操作符

     1、对于有符号数的右移操作是逻辑移位还是算术移位取决于编译器,并且此类程序是不可移植的;

     2、将某个整型值的第n位置1, value |= (1 << n); 清0, value &= ~(1 << n);   测试是否为1, value & (1 << n), 如果是第n位是1,结果为非零值;

二、getchar 函数的返回值是整型,而不是char型,这主要是为了处理EOF文件结束符(即-1),如:

       char        c;

      while  (EOF  !=   (c = getchar()))  {

                       ;

      }

      当这段代码运行在使用无符号字符集(即char的范围是0~255)的机器上,这段代码将是个死循环,因为c的值永远不可能是EOF(即-1);

     即使这段代码运行在了使用有符号字符集的机器上,也只有在读取了值为\377的字节后,才会终止循环。\377为转义序列,代表一个八进制的数,对应无符号char为255,已经超出了有符号char所能表示的+127的正上限,此时会发生截短,然后整型提升,这样得到的值刚好和EOF一样。

      改正:应当将变量c声明为int类型。

三、sizeof  运算符,在编译期间求值,它的操作数既可以是表达式(常常是单个变量),也可以是括号加上类型名,例如 sizeof( int )      sizeof ( x )    sizeof    x        都是合法的。另外要注意,sizeof计算表达式的长度时不会对表达式进行求值,例如:sizeof ( a = b + 1) ,括号里面并没有向变量a赋值。

四、灵活逻辑运算符(利用&&、|| 最短求值 )、运用条件运算符、逗号表达式改善程序结构。

 

 

 以上为第五章“运算符和表达式”摘抄总结,未完待续。。。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值