操作符和关键字

一、操作符是什么?

指令系统的每一条指令都有一个操作符,它表示该指令应进行什么性质的操作。不同的指令用操作符这个字段的不同编码来表示,每一种编码代表一种指令。

操作符分类        

算数操作符:+ - * /   (两端的操作数若有一个是浮点数时,会执行浮点运算)   %(取余数运算,两端操作数必须都为整数)

移位操作符 : <<  >>  (他的作用是可以将整数二进制位向左或者向右移动)

位操作符:&  |  ∧   (这里不详细介绍,之后的博客里面会单独讲)

赋值运算符:= +=  -= *=  /= &= ∧=  |= >>= <<=  (这里所有的+=或者是其他形式的均可理解位A+=B就是A=B+A这种形式)

单目操作符:只有一个操作数的运算符

!(逻辑反) -(负值)  +(正值) &(取地址)sizeof(以字节为单位,求数据长度,如果求的是变量名则可以省略(),若为数据类型则不可省略)   ~(对一个数的二进制数按位取反) --(前置--和后置--)++(前置++和后置++) *(间接访问操作符)(类型):强制类型转换
这里要注意区分sizeof()和stelen 

sizeof()是一个操作符并非函数,用来计算所占内存空间大小。

strlen函数是库函数,只针对字符串,求字符串\0前的字符个数。
关系操作符:  >>=   <<=  != (用来测试不相等)  ==(用来测试相等,不能用来判断字符串)想要比较字符串可以用strcmp比较字符串内容。

逻辑操作符:&&逻辑与(全真为真)||逻辑或(一真为真)

条件操作符:exp1?exp2:exp3 (三目运算符,判断exp1为真执行exp2,判断为假执行epx3,整个表达式的结果为exp3)

逗号表达式:exp1,exp2,exp3,.... expN.(从左到右依次执行,表达式的值为最后一个表达式的值)

下标引用,函数调用和结构成员:[] (下标引用操作符,数组中使用)   ()(函数调用操作符)  .->(指向结构变量的指针)

二、关键字

注意:关键字是无需创建的,系统本身预设好的,变量名不能是关键字

常见的关键字有:aoto(自动的)  break  continue do while  for case switch default(默认的) if else goto char  short  int long long long double float (数据类型) const(修饰变量,指针) enum(枚举) extren(声明外部符号) register(寄存器关键字)   return (函数的返回) sizeof() (是一个操作符,用来查找操作数的大小)struct(结构体) union(联合体/共用体) volatile

这里先介绍几个

typedef:类型重定义,他的作用就是给类型取一个别名

举例:

int main()
typedef usnigned int uint;
{
    usnigned int unm;
    uint num2;

}

这里就是给usnigned int 取了个别名叫uint,之后所有的usnigned int跟uint同理,这里uint num2;和usnigned int num2;同理

static:静态的 他是用来修饰变量或者函数的 

1.修饰局部变量

#include <stdio.h>
void test()
{
    int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0; }

这时这个代码的运行结果应该是 1 1 1 1 1 1 1 1 1 1 

当我们用static修饰之后

#include <stdio.h>
void test()
{
    //static修饰局部变量
    static int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
    int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0; }

这个代码的运行结果为 1 2 3 4 5 6 7 8 9 10 

对比两段代码,我们用static修饰局部变量之后,变量的生命周期发生了变化,由出作用域就销毁变为整段程序结束   

2.修饰全局变量

//add.c
 int g_val = 2018;
//test.c
int main()
{
    printf("%d\n", g_val);
    return 0;
}

这时候代码可以正常引用外部的文件

//add.c
static int g_val = 2018;
//test.c
int main()
{
    printf("%d\n", g_val);
    return 0;
}

但当我们使用static修饰函数之后,这个程序就无法正常运行。通过对比可以知道,当一个全局变量被static修饰时,他就只能在自己的.c文件中使用,外部链接属性变为内部链接属性,其他源文件就无法通过链接使用。

3.修饰函数

//add.c
int Add(int x, int y) 
{
    return c+y; }
//test.c
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
}

可以正常引用函数

但是当我们用static修饰函数后

//add.c
static int Add(int x, int y) {
    return c+y; }
//test.c
int main()
{
    printf("%d\n", Add(2, 3));
    return 0; }

代码就会报错   ,当一个函数被static修饰时也会使得这个函数外部链接属性变为内部链接属性,不能被外部链接所使用,只能在.c文件内部中使用。      


总结

以上就是今天要讲的内容,本文仅仅简单介绍了C语音中的关键字和操作符,后期也会用更加详细的讲解哦。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值