C语言知识小锦:下(操作符~结构体)
文章目录
目录
前言
本篇博客我们会了解一下操作符,常见关键字,#define定义常量和宏,指针以及结构体的相关知识。希望同学们仔细阅读,并勤加练习。
十、操作符
操作符指的其实就是运算符号,根据操作对象可以把操作符分为三种类型:一元运算符、二元运算符和多元运算符(一般三元)。
接下来我会给你们一一介绍
1.算术操作符(+, -, *, /, %)
算术操作符相当于我们数学中所学的加(+)减(-)乘—(*)除(/)取余(%)等运算
#include<stdio.h>
int main()
{
printf("%d",7/3);//输出2
printf("%f",7.0/3);//输出2.33333....
printf("%d",7%3);//输出1
return 0;
}
2.移位操作符(》,《)
左移n位就是把这个数转为二进制后 后面加n个零 前面的n位舍弃
右移n位就是把这个数转为二进制后 前面加n个零 后面的n位舍弃
值得注意的是,移位操作符移动的是二进制位
3.赋值操作符(=,+=,-=,*=,/=,&=,^=,|=,《=,》=)
举个例子来说,a+=1相当于a=a+1,剩下的也是一个道理
#include<stdio.h>
int main()
{
int a=0;//初始化a变量
a=20;//给a赋值
a+=10;//将a+10的结果赋值给a
printf("%d",a);//输出30
}
4.位操作符(&,^,|)
5.单目操作符(!,-,+,&,sizeof,~,--,++,*,(类型))
-,+ 指的是取正取反操作
~ 是对一个数的二进制按位取反
* 是间接访问操作符(解引用操作)
(类型) 是强制类型转换操作
//在C语言中,0表示假,1表示真
int flag=0;
if(!flog)
{
printf("hello");//输出hello
}
若int flag=0;
if(!flog)
{
printf("hello");//不输出hello
}
//flag是单目操作符
#include<stdio.h>
int main()
{
int a=10;
printf("%d",sizeof(a));//输出4
printf("%d",sizeof(int));//输出4
return 0;
}
//sizeof为是一个判断数据类型或者表达式长度的运算符,不是函数
#include<stdio.h>
int main()
{
int a=3.14;
printf("%d",a);//输出3
int a=(int)3.14;
printf("%d",a);//输出3,将3.14强制类型转换为int型
return 0;
}
6.关系操作符(>,>=,<,<=,!=,==)
//判断两数是否相等
#include<stdio.h>
int main()
{
int a=10;
if(a=5)//赋值运算符
printf("1");//输出1
if(a==5)
printf("1");//不输出
return 0;
}
7.逻辑运算符(&&逻辑与,||逻辑或)
#include<stdio.h>
int main()
{
int a=3,b=4;
if(a==3&&b==4)
printf("123");//输出123
return 0;
}
#include<stdio.h>
int main()
{
int a=5,b=4;
if(a==3&&b==4)
printf("123");//不输出123
if(a==3||b==4)
printf("123");//输出123
return 0;
}
8.条件运算符(exp1?exp2:exp3)
该运算符是在我们目前所接触的C语言中唯一的三目操作符
exp1若为真,则运算exp2 总体结果为exp2
exp1若为假,则运算exp3 总体结果为exp3
if(a>b)
m=a;
else
m=b;
即可用
m=a>b?a:b
代替
9.逗号表达式(exp1,exp2,exp3,...expN)
#include<stdio.h>
int main()
{
int a=3;
int b=20;
int c=0;
int d=(a-=3,b+=a,c=a-b,b=a-4);
printf("%d",d);输出-4
return 0;
}
//表达式会从左向右依次计算,但整个表达式的结果是最后一个表达式的结果
10.([]下标引用,()调用操作符,. ->结构成员)
//实现输出两数中的最大值
#include<stdio.h>
int get_max(int x,int y)
{
if(x>y)
return x;
if(x<y)
return y;
}
int main()
{
int m=get_max(3,5);
printf("%d",m);//输出5
}
十一、常见关键字
auto registern-寄存器 volatile if else go to break case default continue while char int long float double signed-有符号的 typedef-类型重命名 void-无/空 unsigned-无符号的 const extern-声明外部符号 sizeof enum-枚举关键字 struct-结构体 union-联合体 return-返回(函数中使用)
十二、#define定义常量和宏
1.定义常量
#include<stdio.h>
#define MAX 1000
int main()
{
int m=MAX;
printf("%d",m);//输出1000
return 0;
}
2.定义宏
#include<stdio.h>
#define MAX(x,y) (x>y?x:y)
int main()
{
a=10;
b=20;
int m=MAX(a,b);
printf("%d",m);//输出20
return 0;
}
//宏的代码可为多条语句
十三、指针
1.指针变量
1.在内存中,一个内存单元是一个字节
2.内存单元是有编号的,编号就是内存单元的地址,也叫指针
3.%p:地址
#include<stdio.h>
int main()
{
int a=10;
int* pa=&a;//pa指向的对象是int型
*pa=100;
printf("%d",a);//输出100
return 0;
}
//pa是用来存放地址的,所以我们把pa叫做指针变量
#include<stdio.h>
int main()
{
char ch='w';
char* pc=&ch;//取地址操作符
*pa='q';//*解引用操作符,它的意思是通过pc中存放的地址,找到pc指向的内容
printf("%c",ch);//输出q
return 0;
}
//值得注意的是*&p=p
2.指针变量的大小
#include<stdio.h>
int main()
{
char ch='w';
int a=10;
int* pa=&a;
char* pc=&ch;
printf("%d",sizeof(pa));//输出4
printf("%d",sizeof(pc));//输出4
return 0;
}
//32位平台sizeof(指针)总是4
//64位平台sizeof(指针)总是8
十四、结构体(struct)
结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”,其描述了一块内存区间的大小及解释意义。
总结
以上就是今天要讲的全部内容啦
《C语言知识小锦》也算就此完成了
后续我还会发布一些在《C语言知识小锦》中没有详细讲到到的内容
欢迎老铁们的收听和观看
蟹蟹