第三天初识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; }