热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运算符、判断与循环

运算符、判断与循环1C运算符的种类、运算优先级和结合性1.1常用运算符分类运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较
运算符、判断与循环

1 C 运算符的种类、运算优先级和结合性


1.1 常用运算符分类


运算符类型作用
算术运算符用于处理四则运算
赋值运算符用于将表达式的值赋给变量
比较运算符用于表达式的比较,并返回一个真值或假值
逻辑运算符用于根据表达式的值返回真值或假值
sizeof运算符用于求字节长度

1.1.1 算术运算符


运算符术语示例结果
+10+515
-10-55
*10*550
/10/52
%取模(取余)10%31
++前自增a=2;b=++a;a=3;b=3;
++后自增a=2;b=a++;a=3;b=2;
前自减a=2;b=–a;a=1;b=1;
后自减a=2;b=a–;a=1;b=2;

重点说明
/ 运算符:两个整数做除法得到的是整数,即小数部分舍去,只留下整数部分,比如5/3=1;
但除号两侧只要有一侧是浮点类型数据,那得到的结果就有小数部分;

#includeint main(){int a=5,b=3; //两个整型变量double c=5,d=3; //两个浮点型变量printf("%d\n",a/b); //结果:1printf("%lf\n",1.0*a/b); //结果:1.66667printf("%lf\n",c/d); //结果:1.66667return 0;}

% 运算符:运算符两侧要求必须是整型的;

#includeint main(){int a=5,b=3;printf("%d\n",a%b); //结果:2return 0;}

1.1.2 赋值运算符


运算符术语示例结果
=赋值a=2;b=3a=2;b=3
+=加等于a=0;a+=2a=2
-=减等于a=0;a-=2a=-2
*=乘等于a=2;a*=2a=4
/=除等于a=4;a/=2a=2
%=模等于a=3;a%=2a=1

1.1.3 比较运算符

c语言的比较运算符中,“真”用“1”表示,“假”用“0”表示
而凡是非“0”的都为“真”。

运算符术语示例结果
==相等于4==30
!=不等于4!=31
<小于4<30
>大于4>31
<&#61;小于等于4<&#61;30
>&#61;大于等于4>&#61;31

1.1.4 逻辑运算符


运算符术语示例结果
!!a如果a为假&#xff0c;则!a为真;如果a为真&#xff0c;则!a为假
&&a&&b如果a和b为都为真&#xff0c;则结果为真;否则为假
||a||b如果a和b有一个为真&#xff0c;则结果为真;二者都为假&#xff0c;则结果为假
?:条件运算符a>b?a:b如果a>b为真&#xff0c;则执行a;否则执行b

1.1.5 sizeof运算符

该运算符用于求字节长度&#xff0c;比如一个int形数据 4个字节&#xff0c;那sizeof(int)&#61;4,再比如一个double形数据 8个字节&#xff0c;那sizeof(double)&#61;8。

1.2 运算符的优先级


类别运算符结合性
(类型)强制转换
乘除*,/,%从左往右
加减&#43;,-从左往右
比较&#61;&#61;,!&#61;,<,>,<&#61;,>&#61;从左往右
逻辑&&&#xff0c;||从左往右
赋值运算符&#61;,&#43;&#61;,-&#61;,*&#61;,&#61;,%&#61;从右往左
条件运算符?:从右往左
逗号,从左往右

1.3 不同类型数据间的转换与运算

转换的方法有两种:
*自动转换(隐式转换):遵循一定的规则&#xff0c;由编译系统自动完成。
*强制类型转换:把表达式的运算结果强制转成所需的数据类型。
类型转换的原则:占用内存字节数少(值域小)的类型&#xff0c;向占用内存字节数多(值域大)的类型转换&#xff0c;以保证精度不降低。
在这里插入图片描述
隐式转换&#xff1a;

#include int main(){int num &#61; 5;printf("s1&#61;%d\n", num / 2); //结果仍是整型printf("s2&#61;%lf\n", num / 2.0); //结果为浮点型return 0;}

强制转换&#xff1a;

#include int main(){float x &#61; 0;int i &#61; 0;x &#61; 3.6;i &#61; x; //x为浮点型, i为整型&#xff0c;直接赋值会有警告i &#61; (int)x; //使用强制类型转换printf("x&#61;%f, i&#61;%d\n", x, i); //x&#61;3.60&#xff0c;i&#61;3return 0;}

2 判断


2.1 if语句


2.1.1 if语句

描述:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

在这里插入图片描述

int a &#61; 1;int b &#61; 2;if (a < b){printf("%d\n", a);}

OJ题1007

2.1.2 if…else语句

在这里插入图片描述

int a &#61; 1; int b &#61; 2;if (a > b){printf("%d\n", a);}else{printf("%d\n", b);}

2.1.3 if…else if…else语句

#includeint main(){int x,y;scanf("%d",&x);if(x<1) y&#61;x;else if(x<10) y&#61;2*x-1;else y&#61;3*x-11;printf("%d\n",y);return 0;}

2.1.4 if嵌套语句

int a &#61; 100;int b &#61; 200;if( a &#61;&#61; 100 ){if( b &#61;&#61; 200 ){/* 如果条件为真&#xff0c;则输出下面的语句 */printf("a 的值是 100&#xff0c;且 b 的值是 200\n" );}}printf("a 的准确值是 %d\n", a );printf("b 的准确值是 %d\n", b );

3 循环


3.1 while和do-while循环结构


3.1.1 while循环

在这里插入图片描述

#include int main(){int a &#61; 1;while (a <&#61; 10){a&#43;&#43;; //a&#43;&#61;1;printf("%d ",a); //输出1&#xff5e;10}return 0;}

3.1.2 do-while循环结构

在这里插入图片描述

#include int main(){int a &#61; 1;do{a&#43;&#43;;printf("a &#61; %d\n", a);} while (a < 10);return 0;}

3.1.3 for循环结构

for循环语法&#xff1a;

for ( init; condition; increment )
{statement(s); //主循环体
}

循环步骤:
*1.init 会首先被执行&#xff0c;且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句&#xff0c;只要有一个分号出现即可。
*2.接下来&#xff0c;会判断 condition。如果为真&#xff0c;则执行循环主体。如果为假&#xff0c;则不执行循环主体&#xff0c;且控制流会跳转到紧接着 for 循环的下一条语句。
*3.在执行完 for 循环主体后&#xff0c;控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空&#xff0c;只要在条件后有一个分号出现即可。
*4.条件再次被判断。如果为真&#xff0c;则执行循环&#xff0c;这个过程会不断重复&#xff08;循环主体&#xff0c;然后增加步值&#xff0c;再然后重新判断条件&#xff09;。在条件变为假时&#xff0c;for 循环终止。

#include int main (){/* for 循环执行 */for( int a &#61; 10; a < 20; a &#43; &#43; ){printf("a 的值&#xff1a; %d\n", a);}return 0;}

3.2 循环控制语句break和continue


3.2.1 break

终止循环或 switch 语句&#xff0c;程序流将继续执行紧接着循环或 switch 的下一条语句。

#include int main (){int a &#61; 10;/* while 循环执行 */while( a < 20 ){printf("a 的值&#xff1a; %d\n", a);a&#43;&#43;;if( a > 15){/* 使用 break 语句终止循环 */break;}}return 0;}

3.2.1 continue

告诉一个循环体立刻停止本次循环迭代&#xff0c;重新开始下次循环迭代。
求100以内所有奇数的和&#xff1a;

#includeint main(){int sum &#61; 0; //定义变量sumfor (int i &#61; 1; i <&#61; 100; i&#43;&#43;){if (i % 2 &#61;&#61; 0) //如果i是一个偶数&#xff0c;执行if语句中的代码{continue; //结束本次循环}sum &#43;&#61; i; //实现sum和i的累加}printf("sum &#61; %d\n", sum);return 0;} &#96;&#96;&#96;


推荐阅读
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文详细介绍了C语言中链表的两种动态创建方法——头插法和尾插法,包括具体的实现代码和运行示例。通过这些内容,读者可以更好地理解和掌握链表的基本操作。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
  • 本文详细介绍了如何解决MyBatis中常见的BindingException错误,提供了多种排查和修复方法,确保Mapper接口与XML文件的正确配置。 ... [详细]
  • 探索1000以内的完美数:因数和等于自身
    本文探讨了如何在1000以内找到所有完美数,即一个数的因数(不包括自身)之和等于该数本身。例如,6是一个完美数,因为1 + 2 + 3 = 6。通过编程实现这一过程,可以更好地理解完美数的特性。 ... [详细]
  • 本文探讨了《魔兽世界》中红蓝两方阵营在备战阶段的策略与实现方法,通过代码展示了双方如何根据资源和兵种特性进行战士生产。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
author-avatar
鞋-丢-了_151
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有