ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

C++入门教程:运算符、表达式与控制流程

C++入门教程:运算符、表达式与控制流程 本文是 C 系列教程的第 2 篇。上一篇介绍了 C 的环境搭建、第一个程序和基本数据类型本篇深入讲解运算符、表达式与三种控制流程顺序、选择、循环并掌握 break/continue 等跳转语句。一、运算符详解1.1 运算符分类总览类别运算符示例算术 - * / %a b关系 !a b逻辑 || !a b位运算 | ^ ~ a b赋值 - * / %a 3自增自减 --a条件? :a b ? a : b逗号,a, b1.2 算术运算符与细节#includeiostreamusingnamespacestd;intmain(){inta17,b5;cout17 / 5 a/bendl;// 3整数除法截断cout17 % 5 a%bendl;// 2取余cout-17 % 5 (-a)%bendl;// -2符号跟随被除数// 自增自减intx10;coutx 先取值后自增: xendl;// 10cout此时 x xendl;// 11coutx 先自增后取值: xendl;// 12return0;}1.3 关系与逻辑运算符#includeiostreamusingnamespacestd;intmain(){intage25;boolhasTickettrue;// 关系运算coutage 18: (age18)endl;// 1coutage 25: (age25)endl;// 1// 逻辑运算与、||或、!非boolcanEnter(age18)hasTicket;cout可以入场: canEnterendl;// 1boolstudentfalse;cout是学生或已成年: (student||age18)endl;// 1cout不是学生: !studentendl;// 1return0;}1.4 短路求值和||具有短路特性左侧结果已能确定最终值时右侧不再计算。#includeiostreamusingnamespacestd;intmain(){intdivisor0;// 利用短路防止除零divisor ! 0 为假时右侧 10/divisor 不会执行if(divisor!010/divisor2){cout条件成立endl;}else{cout短路保护生效未发生除零endl;}return0;}1.5 位运算符#includeiostreamusingnamespacestd;intmain(){inta5;// 0101intb3;// 0011couta b (ab)endl;// 10001couta | b (a|b)endl;// 70111couta ^ b (a^b)endl;// 60110cout~a (~a)endl;// -6couta 1 (a1)endl;// 10左秽一位 乘2couta 1 (a1)endl;// 2终位 隌return0;}二、运算符优先级2.1 常见优先级速查从高到低优先级运算符1()[]-.2!~---一元3* / %4 -5 6 7 !89^10|1112||13?:14-等2.2 优先级示例#includeiostreamusingnamespacestd;intmain(){inta23*4;// 14* 优先于 intb(23)*4;// 20括号改变优先级boolc3245;// true关系运算优先于逻辑coutaendl;coutbendl;coutcendl;// 建议复杂表达式加括号提高可读性intscore85;chargradescore90?A:(score80?B:C);cout等级: gradeendl;// Breturn0;}三、选择结构3.1 if / else if / else#includeiostreamusingnamespacestd;intmain(){intscore;cout请输入成绩: ;cinscore;if(score90){cout优秀endl;}elseif(score80){cout良好endl;}elseif(score60){cout及格endl;}else{cout不及格endl;}return0;}3.2 switch 语句#includeiostreamusingnamespacestd;intmain(){intday;cout输入星期几1-7: ;cinday;switch(day){case1:cout周一endl;break;case2:cout周二endl;break;case3:cout周三endl;break;case4:cout周四endl;break;case5:cout周五endl;break;case6:case7:cout周末endl;break;// 多个 case 共享default:cout无效输入endl;// 缺省分支}return0;}3.3 switch 与 if 的选择场景推荐判断整数/字符等于某几个值switch范围判断、浮点比较、复杂条件if/else四、循环结构4.1 while 循环#includeiostreamusingnamespacestd;intmain(){// 计算 1 到 100 的和intsum0,i1;while(i100){sumi;i;}cout12...100 sumendl;// 5050return0;}4.2 do-while 循环#includeiostreamusingnamespacestd;intmain(){intn;// do-while 至少执行一次适合「先输入后验证」do{cout请输入一个正数: ;cinn;}while(n0);cout你输入了: nendl;return0;}4.3 for 循环#includeiostreamusingnamespacestd;intmain(){// 打印 9x9 乘法表for(inti1;i9;i){for(intj1;ji;j){coutjxi(i*j)\t;}coutendl;}return0;}4.4 循环控制break 与 continue#includeiostreamusingnamespacestd;intmain(){// break: 立即终止整个循环for(inti1;i10;i){if(i5)break;couti ;}coutendl;// 输出: 1 2 3 4// continue: 跳过本次循环剩余语句进入下一次for(inti1;i10;i){if(i%20)continue;// 跳过偶数couti ;}coutendl;// 输出: 1 3 5 7 9return0;}4.5 嵌套循环与 goto不推荐#includeiostreamusingnamespacestd;intmain(){// 找出第一个满足 i*j 24 的组合for(inti1;i10;i){for(intj1;j10;j){if(i*j24){cout找到: i x j 24endl;gotofound;// 跳出多重循环}}}cout未找到endl;found:cout程序结束endl;return0;}五、实战猜数字游戏综合本篇全部知识实现猜数字游戏#includeiostream#includecstdlib#includectimeusingnamespacestd;intmain(){// 用当前时间做随机种子srand(time(nullptr));intsecretrand()%1001;// 1~100 随机数intguess,attempts0;cout 猜数字游戏 endl;cout我已想好一个 1~100 之间的数字你来猜endl;while(true){cout请输入你的猜测: ;cinguess;attempts;if(guesssecret){cout太大了endl;}elseif(guesssecret){cout太小了endl;}else{cout恭喜你猜对了endl;cout数字是 secret你共猜了 attempts 次。endl;break;}if(attempts10){cout次数用尽答案是 secret下次加油endl;break;}}return0;}运行示例 猜数字游戏 我已想好一个 1~100 之间的数字你来猜 请输入你的猜测: 50 太大了 请输入你的猜测: 25 太小了 请输入你的猜测: 37 恭喜你猜对了 数字是 37你共猜了 3 次。总结本篇讲解了运算符的分类与优先级、短路求值、if/switch 选择结构、while/do-while/for 循环和 break/continue/goto 跳转语句并用猜数字游戏串联实战。重点掌握优先级与括号、短路求值、三种循环的适用场景、break 与 continue 的区别。下一篇将讲解函数与作用域详解参数传递、重载、递归敬请期待
返回列表