[c语言基础回顾]操作符和表达式中一些极其容易混淆的知识点
来源:互联网 发布:淘宝商城入驻检测 编辑:程序博客网 时间:2024/05/20 13:07
易错知识回顾
一.区分按位操作和逻辑操作
- &是将数在内存中以二进制补码形式按位进行”与”操作
- &&是逻辑上的”与”操作
12的二进制数是1100 2 的二进制是0010
12&2结果为0;
12&&2结果为1;
二. 位移操作
1. 基本知识
- 左移
- 二进制左移N位=*(2^n);
- 逻辑左移=算数左移,右边统一添0
- 右移
- 二进制右移N位=/(2^n);
- 逻辑右移,左边统一添0
- 算数右移,左边添加的数和符号有关
- 编程默认采用算术右移
2. 一个经典的算法
求一个数二进制补码中1和0的个数
int binaryCount(int Num){ int count = 0; while (Num) { Num = Num&(Num - 1);//减一操作是把最右边第一个1还有之后的0(如果有)取反,之后用与操作置零 count1++; } return count;}
//求二进制 中0 的个数 while (num + 1) { num |= (num + 1); // 将最右边的0和之后的1(如果有)取反,用或操作置1,直到溢出变为全零 count++; } return count; }
掌握一种 总位数减去另外一中即可.
三.szie of重要知识点
- size of是一个单操作符,并不是一个函数;
数组中sizeof(array)和sizeof(&arry)区别
当在函数中 初始化之后计算长度的时候
- sizeof(array)是指整个数组的字长
- sizeof(&arry)是取一个指针的字长
当作为参数传参的时候
- sizeof(array)和sizeof(&arry)都作为指针
- sizeof(array)和sizeof(&arry)都作为指针
- sizeof(表达式) 表达式中的值并不进行计算,(size of 在编译时候执行,此时表达式的值未确定但是类型已经确定)
四.结构体中一个常犯的错误
这里是因为数组是不能直接赋值的,数组的名字就是个常量指针
这里相当于int arr[3]={1,2,3,4};arr=3;0x002233=123;5=3;
解决方法很简单了
其实一般的解决方式是利用strcpy函数五. &(取地址符)对于数组的不同之处
我们知道一个数组初始化的时候数组名就是一个指向第一个元素的指针常量
int arr[3];printf("%p",arr);//打印的是数组第一个元素的地址printf(("%p",&arr);//打印的是整个数组的首地址
这两个结果是一样的,但是在加一操作后就不一样了
int arr[3] = {1,3,2};printf("%p\n", arr);printf("arr加一的结果是%p\n", arr+1);printf("%p\n", &arr);printf("&arr加一的结果是%p\n", &arr+1);
可以看到arr+1是下一个元素.&arr+1就直接跳过整个数组了(数组长度是12)
阅读全文
1 0
- [c语言基础回顾]操作符和表达式中一些极其容易混淆的知识点
- c++的一些容易混淆基础知识点
- OC中一些容易混淆和忘记的知识点总结
- java基础中容易混淆的知识点
- 关于IO流操作中的一些容易混淆的知识点
- c语言中容易混淆的概念
- C语言中的几个容易混淆的知识点总结
- C语言中的几个容易混淆的知识点总结
- C/C++容易混淆的小知识点
- C#)DataTable,DataView和DataGrid中一些容易混淆的概念
- java 中容易混淆的知识点
- 容易混淆的知识点
- C语言中容易混淆的几个概念
- C语言中的一些容易出现错误的知识点
- DataTable,DataView和DataGrid中一些容易混淆的概念
- DataTable,DataView和DataGrid中一些容易混淆的概念
- DataTable,DataView和DataGrid中一些容易混淆的概念
- DataTable,DataView和DataGrid中一些容易混淆的概念
- 深入理解Java:类加载机制及反射
- View绘制流程总结
- Python网络编程 1.0 Virtualenv的安装及Pycharm中的布局
- Ubuntu下安装MysqlWorkBench
- HDOJ2107 Founding of HDU
- [c语言基础回顾]操作符和表达式中一些极其容易混淆的知识点
- vue学习之mintui picker选择器实现省市二级联动
- laravel 5.2 任务调度
- RecyclerView缓存机制总结
- Linux命令大全
- MySql Incorrect datetime value: '' for column 'dateTime' at row 1
- Androi沉浸式模式
- 原型模式(Prototype)-----基于JAVA语言
- 位置无关的跳转