操作符与关键字

操作符

算术操作符
+,-,*,/,%
int main(){
    inta,b,c;
    c=a+b;
    c=a-b;
    c=a*b;
    c=a/b;//如果a,b都为整数,则结果也为整数,如4/3=1;要想结果出现小数,则a,b要有一个为小数,如5/2.0=2.5;
    c=a%b;
}
移位操作符
左移操作符<<
右移操作符>>
位操作符
按位与&
按位或|
按位异或^
赋值操作符
赋值=,+=,-=,*=,/=,&=,|=,<<=,>>=//=是赋值,==是等于
int main(){
    int a=c=2,b;
    a=a-b;
    c-=b;//此时a依然等于c;
}
单目操作符
!逻辑反(非)操作
&取地址
+正值
-赋值
sizeof操作数的类型长度
~对一个数的二进制按位取反//所有二进制中的数字,1变0,0变1
++自增//++在前先加后用,++在后先用后加
--自减//和++一样
*间接访问操作符
(类型)强制类型转换

例如:a+b,则此时+是双目操作符,有两个操作数,表示加号;+a,此时+是单目操作符,只有一个操作数。

关系操作符

==,>=,<=,!=,<,>;

逻辑操作符
逻辑与&&
逻辑或||
条件操作符
exp1?exp2:exp3//三目操作符
max=a>b?a:b
//如果exp1成立,则运行表达式exp2,程序结果为exp2的结果
//如果exp1不成立,则运行表达式exp3,程序结果为exp3的结果
//等价于
int main(){
    int a,b,max;
    if(a>b){
        max=a;    
    }else{
        max=b;   
    }
}
逗号表达式
//(a+b,c+d)
include<stdio.h>
int main(){
    int a=3,b=4,c;
    //逗号表达式从左往右计算
    //最后一个表达式的结果是整个表达式的结果
    c=(a=a-2,b=a+4);
    printf("%d\n",c);//c的结果为5;
    return 0;
}

关键字

  1. 关键字是c语言提供的,不能自己创建关键字

  1. 关键字不能用作变量名

  1. define与include是预处理指令,不是关键字

auto

break

case

char

const

continue

default

do

自动

终止

实例

字符

继续

默认

执行

double

else

enum

extern

float

for

goto

if

双精度

否则

枚举

外部

单精度

循环

如果

int

long

register

return

short

signed

sizeof

static

整形

长整形

寄存器

返回

短整形

有符号的

求大小

静态

struct

switch

typedef

union

unsigned

void

volatile

while

结构体

类型定义

联合体

无符号的

直到...为止

重点
  1. typedef--类型重定义

#include<stdio.h>
typedef unsigned int u_int;//将unsigned int类型的名字改为u_intu_int
int main(){
    unsigned int a=100;
    u_int b=100;//此时a,b是一个类型的
    return 0;
}
  1. static--静态的

  • 修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)

一般内存分为栈区,堆区,静态区。栈区存储局部变量、函数的参数;堆区参与动态内存分配;静态区存储全局变量、static修饰的变量。

//不加static
#include<stdio.h>
void test(){
    int a=1;
    a++;
    printf("%d/n",a);
}//此时a的生命周期是进函数开始,出函数结束后清除
int main(){
    int i=0;
    while(i<10){
        i++;
        test();    
    }
    return 0;
}//此代码结果为10个2
//加static
#include<stdio.h>
void test(){
    static int a=1;
    a++;
    printf("%d\n",a);
}//此时a不会在出函数时被清除
int main(){
    int i=0;
    while(i<10){
        i++;
        test();    
    }
    return 0;
}//此程序结果为2~11
  • 修饰全局变量,使得全局变量只能在自己所在的源文件内部可以使用(本来可以在整个工程中使用)

全局变量在其它源文件中可以被使用,是因为全局变量具有外部链接属性,但是被static修饰后就变成了内部链接属性,就不能被其它源文件链接到这个静态的全局变量了。

//文件一
static int a=20;

//文件二
#include<stdio.h>
extern int a;//声明外部变量
int main(){
    printf("%d",a);//被static修饰过的全局变量不能被使用
    return 0;
}
  • 修饰函数

static修饰过的函数只能在自己的源文件内部使用,不能再其它源文件内使用,原理与被static修饰的全局变量相同。

//文件一
static int Add(int x,int y){
    return x+y;
}

//文件二
#include<stdio.h>
extern int Add(int x,int y);//声明外部函数
int main(){
    int a=10,b=10;
    int sum=Add(a,b);
    printf("%d",sum);//被static修饰过的函数不能跨源文件被使用
    return 0;
}

初学C语言,笔记中如果有错误,可以在评论区指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值