2019-11-29

位运算与预处理。

二进制表示并进行上下比较后输出;

&:按位与;都为1的时候才为1

|:按位或;只要有1

异或^:相同为0,不同为1

取反~:(单目运算符只对一项进行处理1与0互换)

将数据表示成二进制形式,如果参与运算的数据是负数则以补码方式表示;

  <<左移       末尾补0   高位的数据将会丢失,低位补0。

1<<3=1000左移三位    前面的0被删掉了

>>右移  (整体向左右移动)移位时,低位右移后舍弃,对于无符号数高位补0。对于有符号数,如果原来的符号位为0;(该数为正),则高位移入0,如果符号位原来为1(该数为负),则高位移入0还是1,取决于所用的计算机系统。

只要转化为 二进制就可以使用位运算

0x表示十六进制的数

二进制可表示数字0~15

交换两个数可以不引入第三个数:a=a^b;b=b^a;a=a^b;

预处理:eg:#include

代码执行的前提就是预处理

ANSI C标准规定可以在C源程序中加入一些“预处理命令” ,以改进程序设计环境,提高编程效率。

这些预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”

C提供的预处理功能主要有以下三种:

  1.宏定义:#define   标识符   字符串eg:# define PI 3.1415926

        2.文件包含

  3.条件编译

             (在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。)

这个标识符(名字)称为“宏名”;在预编译时将宏名替换成字符串的过程称为“宏展开”。

#define是宏定义命令。

对程序中用双撇号括起来的字符串内的字符,即使与宏名相同,也不进行置换。

 宏定义是专门用于预处理命令的一个专用名词,只作字符替换,不分配内存空间。

头文件中可以改为“stdio.h”意义不变。

头文件中自己写的东西只能用“”来定义,就相当于一个函数(不能在函数内重复使用)

#include“1.c”可以进行关联使用,其内程序可以进行直接使用。

#define 第一个空格后完全遵循变量规则,第二个空格后所有的东西都进行替换;无论什么都可以被都可以进行替换;

你可能感兴趣的:(2019-11-29)