3.读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号

原创 2011年11月06日 10:43:18
 

单引号与双引号

我们知道双引号引起来的都是字符串常量,单引号引起来的都是字符常量。

比如:‘a’和“a”完全不一样,在内存里前者占1byte,后者占2byte

1,‘1‘,“1”。

第一个是整形常数,32位系统下占4byte第二个是字符常量,占1byte第三个是字符串常量,占2byte

三者表示的意义完全不一样,所占的内存大小也不一样

字符在内存里是以ASCAII码 存储的,所以字符常量可以与整形常量或变量进行运算。如:‘A+1

关于字符串常量在指针与数组那章将有更多的讨论。

 逻辑运算符

||  和&& 是我们经常用到的逻辑运算符,与按位运算符|&是两码事。虽然简单,但毕竟容易犯错。看例子:

int i=0;

int j=0;

if( (++i>0) || (++j>0) )

{

   //打印出ij的值。

}

结果:i=1;j=0。不要惊讶。

逻辑运算符||两边的条件只要有一个为真,其结果就真;只要有一个结果为假,其结果就为假。

if((++i>0)||(++j>0))语句中,先计算(++i>0),发现其结果为真,后面的(++j>0)便不再计算。

同样&&运算符也要注意这种情况。这是很容易出错的地方,一定要注意。

位运算符

C语言中位运算包括下面几种:

&按位与    |按位或    ^按位异或

~取反     <<左移    >>右移

4种操作很简单,一般不会出错。但要注意按位运算符|&与逻辑运算符||&&完全是两码事,别混淆了。

其中按位异或操作可以实现不用第三个临时变量交换两个变量的值:a^=b;   b^=a;  a^=b;

但并不推荐这么做,因为这样的代码读起来很费劲。

左移和右移

左移运算符<<”是双目运算符。

其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0

右移运算符>>”是双目运算符。

其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

但注意:对于有符号数,在右移时,符号位将随同移动.

当为正数时,最高位补0;

而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定TurboC和很多系统规定为补1

0x01<<2+3的值为多少?

结果为7吗?测试一下。结果为为 32

因为“+”号的优先级比移位运算符的优先级高

好,在32位系统下,再把这个例子改写一下:

0x01<<2+30;或0x01<<2-3

这样行吗?不行。一个整型数长度为32位,左移32位发生了什么事情?

溢出!左移-1位呢?反过来移?

切记,左移和右移的位数是有讲究的。左移和右移的位数不能大于数据的长度,不能小于0

花括号

char a[10]= {“abcde”};

char a[10]=“abcde”;    两者均正确输出效果是一样的

花括号的作用是什么呢?我们平时写函数,ifwhileforswitch语句等都用到了它

但有时又省略掉了它。简单来说花括号的作用就是打包。使之形成一个整体,并与外界绝缘。

相关文章推荐

C语言中的逻辑运算符

  • 2014年12月16日 15:13
  • 115KB
  • 下载

PHP基础1-变量/数据类型/单引号双引号区别/运算符/内容输出

首先注意几点: 文件以.php后缀结尾,所有程序包含在中避免使用中文目录和中文文件名php页面无法直接打开需要运行在服务器环境当中 1. 最简单的php程序 ...

【C语言简单说】十三:逻辑运算符||

(+﹏+)~ 更完睡觉=。=这一节我们来说说逻辑或||,其实很简单的,既然你们理解了第一个逻辑与,那么逻辑或就没什么难度了。我们说过逻辑与就像我们的并列关系,例如我们吃了苹果和李子。我们现在的逻辑...

C语言关系和逻辑运算符与分支语句

一. 关系运算符: 就是用来比较大小的 运算符 名称 >  大于 >= 大于等于 == ...
  • Max_lxg
  • Max_lxg
  • 2016年06月10日 09:44
  • 331

53 C语言逻辑运算符

C语言逻辑运算符

C语言中的逻辑运算符

逻辑运算符是C语言的基本运算符之一,和关系运算符、算术运算符一起被包含在包括C语言在内的大多数程序设计语言中。逻辑运算符包括逻辑非(!),逻辑或(&&)和逻辑(||),其中!是一元运算符,&&和||为...

C语言 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。

编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。 注意ch = getchar()) != EOF的使用,同时定义一个计数器count,便于判断括号是否匹配。#inclu...

【C语言】验证花括号成对出现

题目要求 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。 注意:你不必担心注释内部、字符串常量内部和字符常量形式的花括号。 算法分析 我们先判断左花括号的数量是否...

探索C语言中单引号与双引号的区别

今天看了《C陷阱与缺陷》中对””与’’的描述,’’引起的一个字符代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值;””引起的字符串代表的是一个指向无名数组起始字符的指针。对这两个符号产生...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:3.读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号
举报原因:
原因补充:

(最多只允许输入30个字)