操作符可以不使用符号
!逻辑反操作符(真1假0)
- //负数操作符
+ //正数操作符
& //取地址操作符
i++/i-- | ++i/--i |
先使用原来的值,再进行++或-- | 先计算再进行使用 |
sizeof //操作数的类型长度操作符,也可计算数组大小;sizeof(a[0]) //4
00000000一个字节
~ //对一个数的二进制按位取反操作符
//00000000000000000000000000000000
//1111111111111111111111111111111111111
-1
100000000000000000000000000000001
第一位为1为负值符号
正数:原码,反码,补码一致
负数:在内存中,以补码形式存在
-1
原码:100000000000000000000000000000001
反码:11111111111111111111111111111111111110(负值时第一位不变)
补码:11111111111111111111111111111111111111(在反码基础上加一)
1.所有正数按位取反的值是其本身+1的负数
2.所有负数按位取反的值其本身+1的绝对值
3.0按位取反得到的是-1
(类型)强制类型转化
//条件操作符
exp1 ? exp2: exp3;
//逗号表达式
//exp1,exp2,exp3...expN;
//下标引用操作符
//关键字
1,定义:c语言提供的,不能自己创建的,为关键字。比如 int,return;
2,不能把关键字作为变量名
常见的关键字:
auto:自动变量关键字
{
int a = 1;
变量a,在进大括号的时候,变量创建
}
出大括号的时候,变量自动销毁
//循环判断关键词
break:循环程序中,跳出循环关键字。
while:while循环
for:for循环
case://选择语句关键词
continue://循环关键词
if
else
switch
default
do—while
goto//跳转语句
//变量类型关键词
char,int,float,double,long,short,
signed//有符号类型 -10,+20 int00000000000000000000000000000000 -2^31~2^31
unsigned//无符号类型 int00000000000000000000000000000000 0~2^32(因为第一位判断正负数)//%u
const//常变量关键字
enum枚举关键字
extern外部变量,函数申明符号
#include<stdio.h> extern int Add(int x, int y); extern int gol_a; void test() { static int a = 1;//static修饰局部变量的时候,局部变量改变自身的生命周期,变成了与全局变量生命周期一致 a++; printf("%d\n",a); } int main() { int i = 0; while(i<10) { test(); i++; } return 0; }
//static修饰全局变量,使得全局变量只能在自己所在的源文件(.c)使用
改变外部链接属性,使得其无法在其他文件中使用。
//static修饰函数,使得函数只能在自己所在的源文件(.c)使用
//#define定义的常量和宏
#include<stdio.h>
#define PRINTF printf("Hello world!\n")
#define ADD(x,y) //9 ((x) +(y) )//15
int main()
{
PRINTF;
int a = 3*ADD(2,3);
printf("%d\n",a);
return 0;
}