C 编程中遇到的几种易错情况
来源:互联网 发布:淘宝卖家开通蚂蚁花呗 编辑:程序博客网 时间:2024/05/21 17:38
第一种:变量的应用
代码:
先附上代码:
#include<stdio.h>void main(void){int a=10,b=20,c=30;printf("%d %d %d\n",a+b+c,b=(c*2),c=c+b);}
如果不事先在编译器中进行编译,你可否能说出这个函数输出的结果是什么吗?我在没有进行编译之前,算了一下,结果算错了,看看了书,才知道,这个输出语句的结果输出是这样子的:先计算c=c+b的值,即c=50,再计算b=(c*2)的值,此时的c值已经从原来的30变为50了,那么此时的b值就是100,最后算a+b+c的值,即160;所以该函数输出的结果为:160 100 50
第二种:位运算符和位运算
#include<stdio.h>int func(int x){int c = 0;while(x){c++;x = x & (x-1);}return c;}void main(){printf("%d\n",func(65));}
首先,一定要能判别出func(x)函数内部 x = x &(x-1);语句中的“&”是运算符号是位运算符,说到这句话,可能有些人就要笑了,但是往往这种很基础的知识点才是我们最容易忽略的地方,所以当长时间没有用到的知识点偶尔遇到时,却不知其意,反而容易算错。。。那么根据位运算的知识点,上边的程序输出结果应该是:2
在此,我把常用的有关位运算的知识点做一小小的总结,方便以后查阅:
- &(按位“与”)运算规则是:0&0=0、0&1=0、1&0=0、1&1=1;按位“与”运算通常用来对某些位清0或保留某些位。
- |(按位“或”) 运算规则是:0|0=0、0|1=1、1|0=1、1|1=1;按位“或”运算通常用来对某些位置1.
- ^(按位“异或”) 运算规则是:0^0=0、0^1=1、1^0=1、1^1=0;按位“异或”运算通常用来是特定位翻转或保留原值。
- ~(按位“取反”)运算规则是:~0=1、~0=1;按位“取反”运算通常用来间接地构造一个数,以增强程序的可移植性。
- <<(“左移”)运算规则是:将操作对象各二进制位全部左移指定的位数,移出的高位丢弃,空出的低位补0.注意:若左移时丢弃的高位不包含1,则每左移一位,相当于给该数乘以2.
- >>(“右移”)
运算规则是:将操作对象各二进制位全部右移指定的位数,移出的低位丢弃,空出的高位补0.注意:每右移一位,相当于给该数除以2,并去掉小数。
- C 编程中遇到的几种易错情况
- 关于编程中遇到inf的情况
- C/C++编程中遇到的错误
- AndroidStudio中遇到的情况
- Oracle编程,遇到并发的情况处理
- c编程中出现除以0的情况,-1.#IND00000
- sql case when 中遇到的情况
- eclipse使用中遇到过的情况
- 浅议C编程中遇到scanf函数的一些问题
- C编程中scanf函数遇到的问题
- Linux C编程中遇到问题
- 编程中遇到的困惑
- 编程中遇到的错误
- 编程中遇到的Bugs
- 编程中遇到的缩写
- c++(c语言)编程过程中遇到的细微问题总结(持续更新)
- 遇到的OpenCL kernel文件中参数的限制情况
- 使用ntpdate中遇到的一种特殊情况
- Javascript中的60个经典技巧
- c语言详解sizeof
- near指针,far指针,huge指针
- sizeof 详解
- JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
- C 编程中遇到的几种易错情况
- C 与数据结构中的堆与栈的区别
- java中string的相关知识点
- 多线程—02—锁
- 常用CSS缩写语法总结
- 微软的22道数据结构算法面试题(含…
- Linux下修改文件权限
- javascript的7个技巧 1
- TCP与UDP区别