第三天初识c语言

1.按位取反操作符

#include<stdio.h>
int main() {
    int a = 0 ;
    int b = ~a;//"~"是按位取反操作符
    //第一步将a按位取反:
    //00000000000000000000000000000000
    //取反:
    //11111111111111111111111111111111
    //计算机在存储负数的时候以补码的形式存储,相当于上面的32位的1是补码的形式;
    //计算机在打印输出的时候以原码的形式输出
    //第二步,以原码的形式输出:
    //10000000000000000000000000000001
    printf("%d", b);
    return 0;
}

2.自增自减操作符

#include<stdio.h>
int main() {
    int a = 0;
    int b = 0;
    int c = 0;
    printf("请输入任意一个数字a,以得出b=++a,和b=a++的区别:");
    scanf("%d",&a);
    c = a;
    b = ++a;
    printf("b = ++a 则b = %d  对于++a来说a先自增1,然后赋值给b\n", b);
    b = c++;
    printf("b = a++ 则b = %d  对于a++来说a先赋值给b,然后再自增1\n", b);
    return 0;
}

3.强制类型转换符

#include<stdio.h>
int main() {
    int a = (int)3.14;//(强制类型转换操作符)
    printf("%d",a);
    return 0;
}

4.逻辑与和逻辑或操作符

#include<stdio.h>
int main() {
    int a = 0;
    int b = 0;
    int c = 0;
    printf("非0表示为1,为真,而0直接表示为0,为假\n");
    printf("请随意输入两个数字代表a和b,并输出它们的逻辑或和逻辑与:\n");
    scanf("%d%d",&a,&b);
    c = a && b;
    printf("a && b = %d  逻辑与\"&&\"a与b都是真的时候才为真,输出为1(真),否则为0(假)\n",c);
    c = a || b;
    printf("a || b = %d  逻辑或\"||\"a或b只要有一个为真就是真的,输出为1(真),否则为0(假)\n", c);
    return 0;
}

5.三目操作符

#include<stdio.h>
int main() {
    int a = 0;
    int b = 0;
    int max = 0;
    printf("请输入两个整数,以判断它们的最大值:\n");
    scanf("%d%d", &a, &b);
    max = (a>b ? a : b);//条件操作符也叫三目操作符,有三个表达式组成,
                        //第一个表达式是“a>b”如果正确就输出表达式2的结果,否则就输出表达式3的结果

    printf("max= %d\n",max);
    return 0;
}

6.调用函数操作符和下标操作符

#include<stdio.h>
int add(int x, int y) {
    int z = 0;
    z = x + y;
    return z;
}
int main() {
    int a = 0;
    int b = 0;
    int sum = add(5, 6);//()为调用函数操作符
    printf("%d",sum);
    int arr[10] = { 0 };
    printf("%d",arr[4]);//[]为下标引用操作符
    return 0;
}

7.常见操作符

(1)typedef,register,unsigend,sigend 

#include<stdio.h>
int main() {
    register int c = 1;//register为建议成为储存器变量
    typedef unsigned int un_int;//typedef为重定义类型名,又叫类型重定义
 unsigned int a = 1;//unsigend为无符号数字--正数,sigend为有符号数字
 un_int b = 12;
 printf("%d,%d",a,b);
    return 0;
}

(2)extern,static

//这是在第一个源文件里大的代码:
#include<stdio.h>
void sal() {
    static int i = 1; //int i = 1;//static 是修饰局部变量,局部变量的生命周期变长,i变成了静态变量,在被再次调用时不在初始化
    i++;
    printf("i= %d\n",i);
}

int main() {
    extern int abc;//extern是用来声明外部符号的(例如在另外一个源文件里存在的全局变量)
                   //在另外一个源文件里用static对全局变量修饰,成为静态的全局变量,
                  //将限制全局变量的作用域,在不同源文件执行会报错
    int c = 30;
    int d = 40;
    extern int add(int, int);//在不同源文件中的函数如果需要调用,需要对这个函数声明;
                             //static修饰函数会改变函数的链接,让函数调用无法进行下去;
    int sum = add(c, d);
    printf("sum=%d\n", sum);



    printf("abc=%d\n", abc);
    int a = 0;
    while (a < 5) {
        sal();
        a++;
    
    }



    return 0;
}
//这是在第二个源文件里敲的代码:
  int abc = 2022;
  /*static*/ int add(int x, int y) {  //static修饰函数后会报错
      int z = 0;
      z = x + y;
      return z;
  
  }

8.#define 

#include<stdio.h>
int MAX(int x, int y) {
    if (x > y) {
        printf("MAX=%d\n", x);
    }
    else {
        printf("MAX=%d\n", y);
    }    
}
#define  abc =6;//定义的标识符常量
#define Max(x,y) (x>y?x:y)//宏的定义
int main() {
    int a = 30;
    int b = 40;
    int max = MAX(a,b);//调用函数的方式
    int MAx = Max(a,b);//利用#define的宏的定义
    printf("MAx=%d\n",MAx);
    return 0;
}

9.初识指针

#include<stdio.h>
int main() {
    int a = 1; 
    int* as = &a;//"&a"指的是取a的地址,int* 指的是as指针变量的类型,as是指针名,也叫指针变量
                 //地址也是指针
    printf("&a=%p \n",&a);
    printf("as=%p \n",as);
    printf("a= %d \n", a);
    *as = 20;// *as
    printf("a =%d \n",a);
    return 0;
}

 

posted @ 2022-05-29 22:01  浅影阿  阅读(49)  评论(0编辑  收藏  举报