热门标签 | 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;


推荐阅读
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 本文介绍了C++中的引用运算符及其应用。引用运算符是一种将变量定义为另一个变量的引用变量的方式,在改变其中一个变量时,两者均会同步变化。引用变量来源于数学,在计算机语言中用于储存计算结果或表示值抽象概念。变量可以通过变量名访问,在指令式语言中引用变量通常是可变的,但在纯函数式语言中可能是不可变的。本文还介绍了引用变量的示例及验证,以及引用变量在函数形参中的应用。当定义的函数使用引用型形参时,函数调用时形参的改变会同时带来实参的改变。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
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社区 版权所有