1 操作符

(1)移位操作符

  左移<<:值最左边的几位丢弃,右边多出来的几个空位用0补齐

    01101101

   011(丢弃)01101000(后面三位补0)

  右移>>:

    算术左移和逻辑左移只有操作数是负值的时候才不一样。算术移位,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均位1,符号为0则移入的位均为0,因为这样可以保证原来数的正负不变。

    10010110右移2位,逻辑移位为00100101,算术移位11100101

案例1:

 //计算1的位的个数
int count_one_bits(unsigned value)
{
int ones;
for(ones=;values!-;value=value>>)
{
if(value%!=)
{
ones=ones+;
}
}
return ones;
}

(2)赋值

  赋值操作符的结合性是从右到左,也就是

    a=x=y=3<==>a=(x=y=3)

(3)单目运算符

  sizeof是运算符,用来求操作数的类型长度,单位位字节。

  前++  表达式的值是操作数增加后的值

  后++  表达式的值是操作数增加前的值

a = b=10

c=++a// a增加到了11 c等于11

d=b++ //b增加到了11 d仍然为10

(4)逻辑操作符(&& ||)

  位操作符和逻辑操作符很容易混淆,逻辑操作符具有短路效应,意思是如果有两个条件,前面条件一旦满足,后面就直接不看了,它是用于测试零值和非零值。而位操作符是比较对应的位。

a=1 b=2

if(a&&b)为真

if(a&b)为假

(5)条件操作符

  expre1?expre2:expre3

  首先计算expre1,如果为真,那么整个表达式值为expre2,不会去执行expre3.如果expre1为假,那么整个表达式的值为expre3,不会求expre2.

(6)逗号操作符

  表达式从左到右逐个求值,整个逗号表达式的值是最后那个表达式的值。

2 指针

(1)内存和地址

主要是知道这两件事:

  内存中的每个位置由一个独一无二的地址标识

  内存中的每个位置都包含一个值

(2) 指针 间接访问和变量

  *&a=25=====》把25赋值给a

  &操作符产生变量a的地址,指针常量,接着*访问其操作数所表示的地址

(3)指针的指针

  int a =10;

  int *b=&a;

  c=&b;那么c的类型是什么,怎么声明

    int **c;相当于int *(*c) *操作符是从右向左结合

(4)指针表达式

char ch='a';

char *cp=&ch;

*cp+1----->'b' *的优先级高于+

*(cp+1)----->ch后面的一个字符,再取值,理论上可以作为右值和左值,但是此处没有定义ch后面是什么。

*cp++----->后缀++优先级高于*

++*cp----->通常可用于数组的遍历 先取得cp的值然后往后移动

(*cp)++---->首先执行间接操作,结果是ch增值前的原先值

++*cp++----->从右往左结合,首先++cp,然后对这个值进行间接操作,然后执行++

    

<c和指针>学习笔记3之操作符,表达式与指针的更多相关文章

  1. C++中的智能指针、轻量级指针、强弱指针学习笔记

    一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"doubl ...

  2. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  3. matlab学习笔记10_2 一般操作符

    一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德 ...

  4. C++指针学习笔记

    本文参考http://www.prglab.com/cms/pages/c-tutorial/advanced-data/pointers.php 1.存储其它变量地址的变量(如下面例子中的addre ...

  5. C++ Primer 学习笔记_60_重载操作符与转换 --赋值、下标、成员訪问操作符

    重载操作符与转换 --赋值.下标.成员訪问操作符 一.赋值操作符 类赋值操作符接受类类型形參,通常该形參是对类类型的const引用,但也能够是类类型或对类类型的非const引用.假设未定义这个操作符, ...

  6. C++ Primer 学习笔记_57_类和数据抽象 --管理指针成员

    复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i): ...

  7. 深入理解C指针----学习笔记

      深入理解C指针     第1章 认识指针   理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址.     1.1 指针和内存   C程序在编译后,以三种方式使用内存: 1. 静态. ...

  8. C语言学习笔记 (002) - C++中引用和指针的区别(转载)

    下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图 ...

  9. C Primer Plus学习笔记(九)- 数组和指针

    数组 数组由数据类型相同的同一系列元素组成 需要使用数组时,通过声明数组告诉编译器数组中内含多少元素和这些元素的类型 普通变量可以使用的类型,数组元素都可以用 float candy[365]; // ...

随机推荐

  1. 1 zabbix3.2.4 安装

    一. 搭建zabbix服务 Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上,注意,不支持PHP7.如下是 ...

  2. T-SQL高级查询语句(父子查询)

    T-SQL高级查询语句 高级查询 1.连接查询,对结果集列的扩展 select * from info select * from info,nation #形成笛卡尔积 select * from ...

  3. android菜鸟学习笔记10----Intent及<intent-filter>

    关于Bundle: 注意到Activity的onCreate()方法的签名是protected void onCreate(Bundle savedInstanceState),其参数是一个Bundl ...

  4. java中随机生成汉字

    main方法中使用: //随机生成100个汉字 String ss=""; for(int i=0;i<100;i++){ ss+=getChinese(i); } Syst ...

  5. Windows 安装nginx

    http://nginx.org/en/docs/windows.html 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx    start nginx : 启动ngin ...

  6. Latex 4: WinEdt 10试用时间限制的破解+注册码激活

    方法1:我发现这个方法1,现在(2018.06.05)在winedt 10.2上已经不能用了,在低版本(10.1及以下版本)上还可以用,所以如果方法1不行,请看方法2. WinEdt 是目前我发现最好 ...

  7. 自用的弹出窗口jquery插件

    现有网上的弹出窗口插件很多, 但发现在项目应用中总会有些功能不能适用, 最后只好自己写一个:插件主要参考了ymPrompt弹窗代码, ymPrompt是JS的弹窗,本插件相当于是ymPrompt的jq ...

  8. BZOJ 1638 [Usaco2007 Mar]Cow Traffic 奶牛交通:记忆化搜索【图中边的经过次数】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1638 题意: 给你一个有向图,n个点,m条有向边. 对于所有从入度为0的点到n的路径,找出 ...

  9. utf8_general_ci和utf8_unicode_ci的比较

    看到很多数据库的设计对于中文字符都是选择选用utf8_general_ci而非utf8_unicode_ci utf8_general_ci和utf8_unicode_ci的区别并不大:utf8_un ...

  10. Linux_服务器_02_在linux上怎么看eclipse控制台输出语句

    在windows下,tomcat启动之后有一个黑窗口,很容易看到System.out.println或ex.printStackTrace这样的函数输出,非常方便调试,但是在linux下,没有这样的窗 ...