当前位置: 首页 > news >正文

种子网站开发杭州品牌网站设计

种子网站开发,杭州品牌网站设计,中国建设网建筑业信息服务平台,360建站平台文章目录 操作符详解一、上期扩展二、单目操作符三、逗号表达式四、下标访问[]、 函数调用()五、结构成员访问操作符六、操作符的属性#xff1a;优先级、结合性1. 优先级2. 结合性 操作符详解 上期回顾#xff1a;【C语言基础】#xff1a;操作符详解(一) 一、上期扩展 … 文章目录 操作符详解一、上期扩展二、单目操作符三、逗号表达式四、下标访问[]、 函数调用()五、结构成员访问操作符六、操作符的属性优先级、结合性1. 优先级2. 结合性 操作符详解 上期回顾【C语言基础】操作符详解(一) 一、上期扩展 【练习一】不能创建临时变量第三个变量 实现两个整数的交换。 方法一我们可以运用加减法来实现这个功能。 分析 交换前a 3b 5 我们先让 a b 然后把这个结果赋值给a也就是a a b 现在a的值变成了8而b的值还是5 接下来我们让a - b把这个表达式赋值给吧也就是b a - b 现在a的值是8b的值是3 最后我们只要将a - b这个表达式赋值给a就行啦也就是a a - b。 我们就会发现a和b的值发生了互换。 下面是代码实现 #includestdio.h int main() {int a 3;int b 5;printf(交换前a %d b %d\n, a, b);a a b;// a 8, b 5b a - b;// a 8, b 3a a - b;// a 5, b 3printf(交换后a %d b %d\n, a, b);return 0; }很明显这种方法也存在着明显的不足那就是当a和b的值比较大时a和b可能会超出int的范围会出现溢出的现象导致无法进行值的互换。 方法二按位异或实现 上次我们学习了位操作符其中按位异或就是对应二进制位相同为0相异为1。根据这个特性我们也能实现这个功能。 分析 首先我们要了解按位异或中几种特殊的情况。比如a ^ aa ^ 0等等。 1101 1101 按位异或后的结果就是0,而任何数与0按位异或后还是它本身。 根据这个特点我们也能实现a和b的互换。 注意按位异或是支持交换律的。 下面说代码实现 #includestdio.h int main() {int a 3;int b 5;printf(交换前a %d b %d\n, a, b);a a ^ b;b a ^ b; // b a ^ b ^ b, b ^ b就等于0// 现在a a ^ b, b aa a ^ b;// a a ^ b ^ a, 因为a ^ a等于0// 现在a b, b aprintf(交换后a %d b %d\n, a, b);return 0; }这种方法也存在着局限性首先要知道按位操作符的操作数必须是整数其次代码的可读性也不高不方便他人理解。 【练习二】编写代码实现求一个整数存储在内存中的二进制中1的个数。 方法一通过不断的去模2除2来获得二进制中1的个数。 注意这里是指补码。 #includestdio.h int count_one_of_bite(unsigned int n) {int count 0; // 计数while (n){if (n % 2 1)count;n n / 2;}return count; } int main() {int n 0;scanf(%d, n);int ret count_one_of_bite(n);printf(二进制中一的个数%d\n, ret);return 0; }方法二n (n - 1) #includestdio.h int count_one_of_bite(unsigned int n) {int count 0; // 计数while (n){count;n n (n - 1);}return count; } int main() {int n 0;scanf(%d, n);int ret count_one_of_bite(n);printf(二进制中一的个数%d\n, ret);return 0; }二、单目操作符 单目操作符Unary Operator是一种只操作一个操作数的操作符。 !、、–、、、、-、~*、sizeof(类型) 正号 ()用于表示正数例如 5 表示正数 5。负号 (-)用于表示负数例如 -5 表示负数 5。递增 ()用于将操作数的值增加 1。可以作为前缀 (i) 或后缀 (i) 使用。递减 (–)用于将操作数的值减少 1。可以作为前缀 (–i) 或后缀 (i–) 使用。取址 ()用于获取变量的内存地址例如 x 表示变量 x 的地址。解引用 (*)用于访问指针所指向的内存中的值。例如*ptr 表示指针 ptr 指向的值。逻辑非 (!)用于求取操作数的逻辑非即取反。例如!x 表示 x 的逻辑非。按位取反 (~)用于对操作数执行按位取反操作。例如 ~ x 表示对 x 的每个位取反。 这些是 C 语言中常用的一些单目操作符。它们可以用来执行各种不同的操作如数值运算、递增递减、逻辑运算和位运算等。 三、逗号表达式 逗号表达式Comma Expression是一种由逗号操作符连接起来的表达式其特点是依次计算每个子表达式并返回最后一个子表达式的值作为整个表达式的值。逗号表达式的一般形式如下 expr1, expr2, expr3, ..., exprN在逗号表达式中逗号操作符 , 用于连接多个子表达式。在计算逗号表达式时每个子表达式都会按顺序依次执行但整个表达式的值将是最后一个子表达式的值。 逗号表达式在 C 语言中可以用于一些特定的场景如在 for 循环的初始化和迭代部分、函数调用参数中以及变量初始化等地方。例如在 for 循环中使用逗号表达式可以同时初始化多个变量 for (int i 0, j 10; i 10; i, j--) {// 循环体 }在函数调用参数中使用逗号表达式可以依次计算多个表达式并将它们作为函数的参数 int result myFunction(a, b, c1, d*2);逗号表达式的使用要谨慎因为它可能会使代码变得难以理解。在某些情况下使用逗号表达式可能降低代码的可读性因此应该根据具体情况慎重考虑是否使用。 【练习】 #includestdio.h int main() {int a 1;int b 2;int c (a b, a b 10, a, b a 1); // 逗号表达式printf(%d\n, c);return 0; }可以看到第六行是一个逗号表达式从左到右依次进行计算最后返回最右边的结果。 四、下标访问[]、 函数调用() [ ] 下标引用操作符 操作数一个数组名 一个索引值(下标) 【举例】 int arr[10];//创建数组 arr[9] 10;//实用下标引用操作符。 []的两个操作数是arr和9。函数调用操作符 接受一个或者多个操作数第⼀个操作数是函数名剩余的操作数就是传递给函数的参数。 【举例】 #include stdio.h void test1() {printf(hehe\n); } void test2(const char *str) {printf(%s\n, str); } int main() {test1(); //这⾥的()就是作为函数调⽤操作符。test2(hello world);//这⾥的()就是函数调⽤操作符。return 0; }五、结构成员访问操作符 结构体 结构体Struct是一种用户自定义的数据类型用于将不同类型的数据组合成一个单独的实体。结构体能够将多个变量打包成一个整体方便操作和传递。 结构是⼀些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量如标量、数组、指针甚⾄是其他结构体。 结构体的声明包括两个部分结构体模板的定义和结构体变量的声明。 结构体模板的定义 struct 结构体名称 {数据类型 成员1;数据类型 成员2;// 更多成员... };其中“结构体名称” 是用户定义的结构体类型的名称可以根据需要自行命名。“成员1”、“成员2” 等是结构体中的成员变量每个成员变量都有自己的数据类型。 【示例】坐标结构体的定义 struct Point {int x;int y; };这个结构体定义了一个名为 Point 的结构体类型它有两个成员变量 x 和 y都是 int 类型。 结构体变量的声明 struct 结构体名称 变量名称;在结构体定义之后可以通过声明结构体变量来创建实际的结构体对象。 【示例】使用上述定义的 Point 结构体来声明一个名为 p 的结构体变量 struct Point p;现在变量 p 是一个具有两个成员变量的结构体对象。可以通过 . 运算符来访问结构体的成员变量例如 p.x 或 p.y。 另外C 语言还提供了一种更简洁的方式来声明结构体变量即使用 typedef 关键字 typedef struct {数据类型 成员1;数据类型 成员2;// 更多成员... } 结构体名称;这样就可以直接使用 结构体名称 来定义结构体变量而不需要再写 struct 关键字。例如 typedef struct {int x;int y; } Point; Point p;这里的 Point 就是一个结构体类型并且可以直接用于声明结构体变量。 //代码1变量的定义 struct Point {int x;int y; }p1; //声明类型的同时定义变量p1 struct Point p2; //定义结构体变量p2//代码2:初始化。 struct Point p3 { 10, 20 };struct Stu //类型声明 {char name[15];//名字int age; //年龄 };struct Stu s1 { zhangsan, 20 };//初始化 struct Stu s2 { .age 20, .name lisi };//指定顺序初始化//代码3 struct Node {int data;struct Point p;struct Node* next; }n1 { 10, {4,5}, NULL }; //结构体嵌套初始化 struct Node n2 { 20, {5, 6}, NULL };//结构体嵌套初始化结构体成员的直接访问 结构体成员的直接访问是通过点操作符 . 访问的。点操作符接受两个操作数。如下所示 #include stdio.h struct Point {int x;int y; }p { 1,2 }; int main() {printf(x: %d y: %d\n, p.x, p.y);return 0; }使用方式结构体变量.成员名 结构体成员的间接访问 有时候我们得到的不是⼀个结构体变量而是得到了⼀个指向结构体的指针。如下所示 #include stdio.h struct Point {int x;int y; }; int main() {struct Point p {3, 4};struct Point *ptr p;ptr-x 10;ptr-y 20;printf(x %d y %d\n, ptr-x, ptr-y);return 0; }使用方式结构体指针-成员名 综合举例 #include stdio.h #include string.h struct Stu {char name[15];//名字int age; //年龄 }; void print_stu(struct Stu s) {printf(%s %d\n, s.name, s.age); } void set_stu(struct Stu* ps) {strcpy(ps-name, 李四);ps-age 28; } int main() {struct Stu s { 张三, 20 };print_stu(s);set_stu(s);print_stu(s);return 0; }六、操作符的属性优先级、结合性 C语⾔的操作符有2个重要的属性优先级、结合性这两个属性决定了表达式求值的计算顺序。 1. 优先级 优先级指的是如果⼀个表达式包含多个运算符哪个运算符应该优先执⾏。各种运算符的优先级是不⼀样的。 3 4 * 5;上⾯⽰例中表达式 3 4 * 5 ⾥⾯既有加法运算符 ⼜有乘法运算符 * 。由于乘法的优先级⾼于加法所以会先计算 4 * 5 ⽽不是先计算 3 4 。 2. 结合性 如果两个运算符优先级相同优先级没办法确定先计算哪个了这时候就看结合性了则根据运算符是左结合还是右结合决定执行顺序。⼤部分运算符是左结合(从左到右执行)少数运算符是右结合(从右到左执行)比如赋值运算符( )。 5 * 6 / 2;上面示例中 * 和 / 的优先级相同它们都是左结合运算符所以从左到右执行先计算 5 * 6 再计算 6 / 2 。 运算符的优先级顺序很多下⾯是部分运算符的优先级顺序按照优先级从高到低排列建议大概记住这些操作符的优先级就行其他操作符在使用的时候查看下面表格就可以了。 • 圆括号 () • ⾃增运算符 ⾃减运算符 – • 单⽬运算符 和 - • 乘法 * 除法 / • 加法 减法 - • 关系运算符 、 等 • 赋值运算符 由于圆括号的优先级最高可以使用它改变其他运算符的优先级。
http://www.hkea.cn/news/14434328/

相关文章:

  • 北辰网站建设公司太原网站制作企业网站在线留言
  • 如何用自己电脑做网站服务器吗网络工程好就业吗
  • 石家庄网站制作方案免费 成品模板网站
  • 上海网络平台网站建设怎样做网站赚钱
  • 上海网站建设联系电翻墙在线代理
  • 贸易公司网站建设方案东莞网站建设报价方案
  • 网站后台新闻不显示如何刷新织梦制作手机网站模板免费下载
  • 重庆网站开发企业广东省建设监理协会网站 - 首页
  • 响应式网站跟一般网站的区别加工平台制作
  • 单页网站制作程序南宁网站建设兼职
  • asp网站制作实例教程cn域名建设网站需要备案吗
  • 网站制作不用备案网络平台的建设方案
  • 湖南长沙做网站德州哪里有学做网站的
  • 网站交换链接的常见形式网站备案是什么意思
  • 聊城网站优化免费搭建微信小程序
  • 最简单做网站阿里云备案网站负责人
  • 做网站的准备什么软件如何给自己的网站做seo
  • 给我一个免费网站吗怎么制作相册带音乐的
  • php网站开发实例 电子书php做的卖水果网站
  • 网站不被百度收录手机中国第一专业门户
  • 濮阳建站公司流程清廉桂林网站
  • 怎么做国外的网站推广小程序 开发公司
  • 商家网站建设阿里大数据官网
  • 怎么弄一个网站平台网站建设属于什么类目
  • 网站dns修改如何建立虚拟架构网站
  • 网站建设合同制人员招聘wordpress优雅的暂停
  • 电商网站建设服务广西住建网官网
  • 临清建设局网站专业官网建设
  • 建设网站流程图百度云搜索引擎入口百度网盘
  • 网站移动窗口代码电脑做网站怎么解析域名