关系操作符

  • 逻辑操作符

>               >=              <           <=                  !=                ==

               大于       大于等于       小于     小于等于       不等于           等于

  • 逻辑操作符

&&                            ||

             逻辑与                   逻辑或

#include<stdio.h>
int main()
{
    //真-非0
    //假-0
    int a = 0;
    int b = 5;
    int c = a && b;
    int d = a || b;
    printf("c=%d\n", c);//c=0
    printf("d=%d\n", d);//d=1
    return 0;
}
  • 条件操作符(三目操作符)

exp1 ? exp2 : exp3

表达式1的结果为真,表达式2执行,代表整个表达式的结果

表达式1的结果为假,表达式3执行,代表整个表达式的结果

#include<stdio.h>
int main()
{
    int a = 10;
    int b = 20;
    int max = 0;
    max = (a > b ? a : b);
    //exp1 ? exp2 : exp3
    printf("max=%d\n", max);
    return 0;
}
  • 逗号表达式

exp1,exp2,exp3

  • 下标引用、函数调用和结构成员

[ ]      (  )        .         ->

#include<stdio.h>
int Add(int x, int y)
{
    int z = 0;
    z = x + y;
    return z;
}

int main()
{
    int arr[10] = { 0 };
    arr[4];//[]--下标应用操作符
    int a = 10;
    int b = 20;
    int sum = Add(a, b);//()-函数调用操作符
    return 0;
}

 

原码、反码、补码

原码                               反码                                     补码

按照正负                       原码符号位不变                   反码+1

二进制序列                    其他位取反

常见关键字

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

计算大小  静态   结构体关键字              类型定义   联合体/共用体    定义变量无符号   空

 

#include<stdio.h>
int main()
{ 
    auto int a = 10;//局部变量-自动变量,可以省略
    register int a = 10;//建议把a放入寄存器中
    return 0;
}
#include<stdio.h>
int main()
{
//typedef--类型定义,类型重定义
    typedef unsigned int u_int;//起了别名
    unsigned int num = 20;// 定义变量无符号
    u_int num2 = 20;
    return 0;
}
#include<stdio.h>
void text()
{
    //static 修饰变量和关键词
    static int a = 1;//a--静态局部变量
    a++;
    printf("a=%d\n", a);//2 3 4 5 6
}
int main()
{
    
    int i = 0;
    while (i < 5)
    {
        text();
            i++;
    }
    return 0;
}
static int g_val=2020
#include<stdio.h>
//static 修饰全局变量
//改变变量作用域,静态的局部变量只能在源文件内部使用
int main()
{
//extern  引入外部符号
    extern int g_val;
    printf(" g_val=%d\n", g_val);
    return 0;
}
static int Add(int x, int y)
{
    int z = x + y;
    return z;
}
#include<stdio.h>
//#define定义标识符常量
//#define定义宏-带参数
#define MAX 100
int main()
{
    int a = MAX;
    return 0;
}
#include<stdio.h>
//static 修饰函数,改变函数连接属性,变成内部链接
//函数具有外部链接属性
extern int Add(int, int);//申明外部函数
int main()
{
    int a = 10;
    int b = 20;
    int sum = Add(a, b);
    printf(" sum=%d\n", sum);
    return 0;
}

#define定义和宏

#include<stdio.h>

int Max(int x, int y)
{
    if (x > y)
        return x;
    else
        return y;
}
//宏定义
#define MAX(X,Y)(X>Y?X:Y)
int main()
{
    int a =10;
    int b = 20;
    //函数
    int max = Max(a, b);
    printf("max=%d\n", max);
    //宏的方式
    max = MAX(a, b);
    printf("max=%d\n", max);
    return 0;
}

 指针p

内存的概念:1字节,内存单位地址

32位,即32位数据线/地址线,受到正电(1)和负电(0)会产生232bit位

#include<stdio.h>
//指针
int main()
{
    int a = 10;//创建空间a,存储为10
    int* p = &a;//取地址a,存储在p中
    printf("%p\n", &a);//009EFBDC
    printf("%p\n", p);//009EFBDC
    *p = 20;//20存储到a中
    printf("a=%d\n", a);
    return 0;
}
#include<stdio.h>
int main()
{
    char ch = 'w';
    char* pc = &ch;
    *pc = 'a';
    printf("%c\n", ch);
    return 0;
}

指针变量的大小

#include<stdio.h>
int main()
{
    printf("%d\n",sizeof(char *));
    printf("%d\n",sizeof(short *));
    printf("%d\n", sizeof(int *));
    printf("%d\n", sizeof(double *));
    return 0;
}

指针大小在32位平台是4个字节,64位平台是8个字节