当前位置:首页 > 生活百科

c语言移位运算符怎么用(c语言移位操作技巧)

栏目:生活百科日期:2025-03-11浏览:0

开始步入正轨,有点那味了

选择语句

if语句

#define _CRT_SECURE_NO_WARNINGS 1#include &<stdio.h&>#include &<string.h&>int main(){int input = 0;printf("你要好好敲代码吗?(1/0)n");scanf("%d", &&input);if (input == 1)printf("一份好工作n");elseprintf("回家卖红薯n");return 0;}

循环语句

while语句

#define _CRT_SECURE_NO_WARNINGS 1#include &<stdio.h&>#include &<string.h&>int main(){int line = 0;printf("入坑,开始学习n");while (line &< 20000){printf("敲一行代码:%dn",line);line++;}if (line &>= 20000)printf("ding~找到一个好工作d=====( ̄▽ ̄*)bn");return 0;}

函数

定义一个求和函数

int Add(int x, int y){int z = x + y;return z;}int main(){int a = 100;int b = 200;int sum = 0;sum = Add(a, b);printf("sum=%dn", sum);return 0;}

数组

一组相同类型元素的集合

定义数组:int arr[10]={0};//定义了一个存放10个整数数字的数组char ch[20};//字符型数组float arr2[5];//浮点型数组

数组是通过下标访问元素,例如:int arr[10]={1,2,3,4,5,6,7,8,9,10};通过语句printf(&“%dn&”,arr[4]);可以打印数字5;即arr[下标]

操作符

此次介绍了移位操作符
左移操作符&<&<,向左移动二进制位;
移位之后变量本身是不变的,变的是操作后产生的一个值,例如代码

int main(){  int a=1;//二进制状态下后四位是0001  int b=a&<&<2;  printf("%dn",b);//b的值为4,二进制状态下最后四位的状态是0100  printf("%dn",a);//变量a还是1  return 0;}

单目操作符、双目操作符、三目操作符

所谓几目就是指的有几个操作数
单目操作符有:!a,-a,,a++;双目操作符有:a+b;三目操作符有:exp1?exp2:exp3,这个表达式的意思可以解释为exp1若成立,则整个表达式的值为exp2,若exp1不成立则整个表达式的值为exp3

关键字

typedef

为类型重命名,即给一个类型起名字
typedef unsigned int uint_32;//将unsigned int重命名为unint_32,所以unint_32也是一个类型名

static

1.修饰局部变量&–静态局部变量:使局部变量的生命周期变长
2.修饰全局变量&–静全局部变量:使全局变量只能在自己所在的源文件内使用
3.修饰函数&–静态函数:把函数本来的外部链接属性变成内部链接属性
总结:让作用范围小的变大,大的变小

指针

指针变量:一种用来存放地址的指针变量,类型为int*(这里的*只是个形式,说明变量是指针变量)
解引用:根据指针变量存放的地址找到该地址的变量;*变量名,(这里的*是操作符)

int main(){  int a=10;//定义一个变量,申请4个字节内存  int* p=&&a;//取地址,把地址放到p的申请的内存里,这里的*说明p就是指针变量  *p=20;//* --解引用操作符,根据p中的地址找到a,并对a进行操作  printf("a=%dn",a);  return 0;//打印结果为20}

执行流程可以理解为:房东找了一个房间出租,房间起了个名叫做a雅居,住进来个人叫10君,房东看了看a雅居的门牌号(这个过程就是&&a),假设地址为0x0012ff40记在本子p上,本子的规格为int*;某一天房东看10君不顺眼,想让20君住进去,房东根据本子p上的地址(即0x0012ff40)找到了10君(这个过程就是*p),把他赶了出去,让20君住进去;现在去a雅居找到的人就是20君

流程图:

??int a=10;解释:申请一块内存命名为a,这块内存放的值为10,这块内存的地址为0x0012ff40
int*p=&&a;解释:申请一块内存命名p,把a的地址放到这块内存中;这块内存p也有地址,但此时不考虑(&&a就是获取a的地址)
*p=20;解释:*p(即解引用)根据p内存储的地址找到a,此时*p就相当于a,对*p的操作相当于对a进行操作;所以把20赋给*p就是把20赋给a

指针变量的大小

指针存储的是地址,32位的机器地址是32位,也就是4个字节,所以32位的机器指针大小为4个字节;同理在64位的机器上地址是64位,占8个字节,所以所以64位的机器指针大小为8个字节
指针变量的大小只与平台位数有关,和变量类型无关

int main() //32位平台{  printf("%dn",sizeof(char*));//占4个字节  printf("%dn",sizeof(short*));//占4个字节  printf("%dn",sizeof(int*));//占4个字节  printf("%dn",sizeof(double*));//占4个字节  return 0;}

结构体

用来描述复杂对象,本质是一种自定义创造出来的类型
结构体类型内有成员,要用.操作符访问

struct Book //结构体的类型{char name&[20];//书名short price;//价格};//这里的分号不可缺少!!!!!!int main(){//利用结构体类型--创建一个该类型的结构体变量struct Book b1 = { "C语言程序设计", 55 };printf("书名:%sn", b1.name);//此处的.为属性操作符,用于访问结构体成员printf("价格:%d元n", b1.price);b1.price = 15;//访问到价格成员,更改数值printf("修改后的价格:%d元n", b1.price);  return 0;}

利用指针pb打印出书名和价格(使用.操作符打印)

struct Book{char name&[20];short price;};int main(){struct Book b1 = { "C语言程序设计", 55 };struct Book* pb = &&b1;//定义指针变量pb   *表明是指针变量//利用指针pb打印出书名和价格                 printf("%sn", (*pb).name);//解引用                printf("%dn", (*pb).price);//   return 0;}

还可以使用-&>操作符打印,更加便捷

struct Book{char name&[20];short price;};int main(){struct Book b1 = { "C语言程序设计", 55 };struct Book* pb = &&b1;//定义结构体指针变量pb   *表明是指针变量                printf("%sn", pb-&>name);               printf("%dn", pb-&>price);   return 0;}

.操作符和-&>操作符的比较:
-&>操作符的使用结构是:结构体指针-&>成员 只要定义了结构体指针变量就可以使用,直接从结构体指针变量指向成员;但.操作符的使用结构是:结构体变量.成员 需要结合解引用,繁琐


对于结构体变量的更改

前文使用b1.prince=15;语句可以更改价格,因为prince是变量,所以可以直接更改数值;但是结构体中的书名name是数组名,本质上是地址,不可以直接更改,所以使用b1.name=&”C++程序设计&”;语句会报错不可以更改。

想要更改如下所示:

struct Book//结构体的类型{char name&[20];//书名short price;//价格};int main(){  struct Book b1 = { "C语言程序设计", 55 };  strcpy(b1.name,"C++程序设计");//全称strcpy-string copy,是一个字符串拷贝函数  printf("%sn",bi.name);  return 0;}

strcpy()函数全称是:strcpy-string copy,是一个字符串拷贝函数
此函数有两个参数,strcpy(目的地,&”需拷贝的字符&”)

“c语言移位运算符怎么用(c语言移位操作技巧)” 的相关文章

同达创业股票怎么样,同达创业股票价格及行情介绍

同达创业(600647)上周末决定终止重大资产重组,今日上午股价在跌停盘附近盘桓,加上此前一段时间的跌幅,股价已经回到7月末未宣布重组前的水平。从8月12日宣布...

咪蒙事件是怎么回事(咪蒙事件大揭秘)

对于咪蒙来说,微信公号主动停更两个月,微博永久关停并没有换来求生的希望。昨天(2月21日),咪蒙微信公众账号显示注销,同时微博、头条、知乎、凤凰等内容平台纷纷宣...

古墓丽影哪个版本最好玩(古墓丽影崛起新手教程)

游戏名称:古墓丽影8地底世界游戏类型:动作冒险类平台:海豚wii模拟器模拟器测试结果:非常流畅!全程维持30帧(2倍分倍率下)配置高的朋友还可以尝试开启1080...

业务员怎么开发客户(新人做电话销售的技巧)

成功销售的能力,与你的客户质量直接相关。因此,销售最关键的一步就是准确找到需要你产品或服务的人。然而,并不是每个企业都能清楚地告诉它的销售人员,如何开发客户,找...

华为5g手机什么时候上市在国内,5g网络什么时候普及

随着三大运营商拿到5G商用牌照,我国终于正式进入5G商用元年,消费者们也开始期待5G手机的到来。目前国内手机厂商只有中兴明确表示将会于7月份在国内市场发布中兴天...

哪个网站招聘效果好,国内招聘网站排名

网友来信:“我想找工作,但是网上的招聘平台太多了,根本不知道选哪一个好,不知道哪个才适合我,这些平台有区别吗?哪一个效果好?”相信这位网友的问题也困扰了不少正在...

k12教育是什么意思,k12教育机构排名

相信如果您正要着手或者已经开始走访各大英语早教机构,‘K12’这个概念您一定会在各大机构里反复听到,甚至您如果搜索各大主流线上英语课程,‘K12’也会反复的出现...

商标注册多长时间能下来,商标注册初审时间介绍

办商标要么用公司执照去办,办完商标的拥有者是公司,要么用个体执照去办,办完后商标拥有者是个人,就是你自己,在这里我确认一点,个人办商标必须要个体执照,办完后商标...

创业者应具备的素质有哪些,创业者具备的八大能力

一、成功创业的素质。1、心理素质:自信心是根本创业是艰难的,在创业的过程中难免会遇到这样或那样的苦恼、挫折、压力甚至失败,这就要求创业者必须具备承受挫折、迎接挑...

土木工程全国大学排名,入围前十的竟然是这十所学校

选择什么专业,是大多考生在填报高考志愿时的困惑。想选一个学习轻松、工作好找、待遇不错的,谈何容易。笔者最近写了几篇关于土木工程专业的文章,受到了很多读者的关注,...