首页 > 其他分享 >C语言运算符与表达式

C语言运算符与表达式

时间:2024-07-17 18:55:44浏览次数:9  
标签:运算 变量 双目 C语言 运算符 表达式 赋值

1.变量赋初值

1. 定义时直接赋值

        例如:int i = 10; 变量 i 初始化。

2. 先定义,后赋值

        例如:int i ; i = 10; 给变量 i 赋初值。

2.C语言算术运算符和算术表达式

1.C语言运算符有以下几类

  1. 算术运算符:包括加(+)、减(-)、乘(*)、除(/)、取余(%)。
  2. 关系运算符:用于比较两个操作数的大小关系,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)。
  3. 逻辑运算符:包括逻辑与(&&)、逻辑或(||)、逻辑非(!)。
  4. 位运算符:对操作数按位进行操作,如按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>)。
  5. 赋值运算符:包括简单赋值(=)和复合赋值运算符(如 +=-=*=/= 等)。
  6. 条件运算符:也称为三目运算符(? :)。
  7. 逗号运算符:用逗号将多个表达式连接起来。
  8. 指针运算符:( * 和 & )
  9. 求字节数运算符:(sizeof)
  10. 强制类型转换运算符:((类型))

2.基本的算术运算符

  1. 加法运算符 + :用于两个数相加。

    • 例如:int a = 5 + 3; ,a 的值为 8 。
    • 对于浮点数也同样适用,如 float a = 2.5 + 1.5; ,a 的值为 4.0 。
  2. 减法运算符 - :实现两个数相减。

    • 比如:int a = 8 - 3; a 的值为 5 。
    • 也能用于负数的运算,如 int a = 3 - 8; ,a 的值为 -5 。
  3. 乘法运算符 * :执行两个数相乘。

    • 举例:int a = 4 * 6; ,a 的值为 24 。
  4. 除法运算符 / :

    • 当两个操作数都是整数时,结果为整数部分,舍去小数部分。例如:int a = 7 / 2; ,a的值为 3 。
    • 若操作数中有一个是浮点数,结果为浮点数。比如:float a= 7.0 / 2; ,a的值为 3.5 。
  5. 取模运算符 或求余运算符% :计算两个整数相除的余数。

    • 例如:int a= 9 % 4; ,a的值为 1 。
    • 求余%要求两边数据与整型相兼容,最终结果与左操作数有关。

 3.算术表达式和运算符的优先级与结合性

       在算术表达式中,运算符的优先级决定了它们执行的先后顺序。优先级较高的运算符会先被执行。

C 语言中算术运算符的优先级从高到低依次为:

  1. */% :这三个运算符具有相同的优先级,用于执行乘法、除法和取模(求余)运算。
  2. +- :用于执行加法和减法运算,它们的优先级低于乘、除、取模运算符。

例如,在表达式 a + b * c 中,由于乘法运算符 * 的优先级高于加法运算符 +,所以会先计算 b * c 的值,然后再将结果与 a 相加。

如果在一个运算对象两侧的运算符优先级相同,则按照运算符的结合性来确定运算顺序。算术运算符的结合性都是“自左向右”,即先左后右。例如,在表达式 a - b + c 中,先进行 a - b 的运算,然后再执行加 c 的运算。

以下是一个完整的 C 语言中运算符优先级和结合性的一览表:

优先级运算符名称或含义使用形式结合方向种类说明
1()数组下标数组名(常量表达式)从左到右特殊运算符
()圆括号(表达式)/函数名(形参表)
.成员选择(对象)对象.成员名
->成员选择(指针)对象指针->成员名
2-负号运算符-表达式从右到左单目运算符
(类型)强制类型转换(数据类型)表达式
++自增运算符++变量名/变量名++算术运算符,单目运算符
--自减运算符--变量名/变量名--单目运算符
*取值运算符*指针变量指针运算符,单目运算符
&取地址运算符&变量名单目运算符
!逻辑非运算符!表达式逻辑运算符,单目运算符
~按位取反运算符~表达式位操作运算符,单目运算符
sizeof长度运算符sizeof(表达式)求字节数运算符
3/表达式/表达式从左到右算术运算符,双目运算符
*表达式*表达式双目运算符
%余数(取模)整型表达式%整型表达式双目运算符
4+表达式+表达式从左到右双目运算符
-表达式-表达式双目运算符
5<<左移变量<<表达式从左到右位操作运算符,双目运算符
>>右移变量>>表达式双目运算符
6>大于表达式>表达式从左到右关系运算符,双目运算符
>=大于等于表达式>=表达式双目运算符
<小于表达式<表达式双目运算符
<=小于等于表达式<=表达式双目运算符
7==等于表达式==表达式从左到右双目运算符
!=不等于表达式!=表达式双目运算符
8&按位与表达式&表达式从左到右位操作运算符,双目运算符
9^按位异或表达式^表达式从左到右双目运算符
10``按位或表达式表达式从左到右双目运算符
11&&逻辑与表达式&&表达式从左到右逻辑运算符,双目运算符
12``逻辑或表达式表达式从左到右双目运算符
13?:条件运算符表达式1? 表达式2:表达式3从右到左条件运算符,三目运算符
14=赋值运算符变量=表达式从右到左赋值运算符
/=除后赋值变量/=表达式
*=乘后赋值变量*=表达式
%=取模后赋值变量%=表达式
+=加后赋值变量+=表达式
-=减后赋值变量-=表达式
<<=左移后赋值变量<<=表达式
>>=右移后赋值变量>>=表达式
&=按位与后赋值变量&=表达式
^=按位异或后赋值变量^=表达式
`=`按位或后赋值变量=表达式
15,逗号运算符表达式,表达式,…从左到右逗号运算符

4.强制类型转换运算符 

一般形式为 (类型名)(表达式)

类型名有:double,int,float等。

5.自增、自减运算符

自增运算符(++

  • 前置自增(++变量):先将变量的值增加 1,然后再使用变量的值进行其他运算。

展开过程

  • 后置自增(变量++):先使用变量当前的值进行其他运算,然后再将变量的值增加 1。

展开过程

自减运算符(--

  • 前置自减(--变量):先将变量的值减少 1,然后再使用变量的值进行其他运算。

展开过程

  • 后置自减(变量--):先使用变量当前的值进行其他运算,然后再将变量的值减少 1。

前置++/--效率高于后置++/--。 

3.不同数据类型间的混合运算

        不同类型的数据在进行混合运算时有一定的规则。例如,当进行+-*/运算的两个数中有一个数为floatdouble型,结果将是double型;如果int型与floatdouble型数据进行运算,会先把int型和float型数据转换为double型再进行运算;字符型数据与整型数据进行运算时,是把字符的 ASCII 代码与整数数据进行运算。

 4.赋值运算符和赋值表达式

在 C 语言中,赋值运算符为 = ,用于将一个值赋给一个变量。

赋值表达式的一般形式为:变量 = 表达式 。

例如:int num = 10; 这里将整数 10 赋值给变量 num 。

赋值运算符具有以下特点:

  1. 赋值运算符的左边必须是一个变量,不能是常量或表达式(可取地址)。

  2. 赋值运算的执行过程是将等号右边表达式的值计算出来,然后赋给左边的变量(不可取地址)。

  3. const + 变量(只读,但可取地址)

除了简单的赋值运算符 = ,还有复合赋值运算符,如 += 、 -= 、 *= 、 /= 、 %= 等。

混合赋值:
长装短里,舍掉高位;

短装长里,放在地位,高位符号位扩展(有符号),补0(无符号)。

标签:运算,变量,双目,C语言,运算符,表达式,赋值
From: https://blog.csdn.net/lijiaweixx/article/details/140501691

相关文章

  • C语言数据类型
    1.整型数据整型数据的分类:int:这是最常见的整型类型,通常在大多数系统中占用4个字节(32位),表示的范围大致是 -2147483648 到 2147483647 。shortint(或者简称为 short):占用的存储空间通常比 int 少,一般为2个字节(16位),表示的范围相对较小。longint(或者简称为 long):通......
  • C语言中常见库函数(1)——字符函数和字符串函数
    文章目录前言1.字符分类函数2.字符转换函数3.strlen的使用和模拟实现4.strcpy的使用和模拟实现5.strcat的使用和模拟实现6.strncmp的使用和模拟实现7.strncpy函数的使用8.strncat函数的使用9.strncmp函数的使用10.strstr的使用和模拟实现11.strtok函数的使用12.strerror......
  • 4. 基本运算符
    1.用户与程序交互1.1输入input用户输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名 只能转换符合整数类型的字符串 1.2输出printprint函数有一个默认参数,end="\n",\n表示换行 2.基本运算符2.1算术运算符乘  * 幂次方  **除  /取余 ......
  • C++ 《运算符重载》
    示例代码#include"iostream"//operator+usingnamespacestd;classA{public:intm_age;public:A(){}A(intage):m_age(age){}//Aoperator+(constA&a){//成员函数实现重载//Atemp(0);//temp.m_age=m_age+a.m_age;//......
  • 运动会分数统计(数据结构课设)(C语言版)
         本文为数据结构与算法的课程设计《运动会分数统计》的一个分享,使用了顺序表的数据结构。并且将信息以表格的方式打印输出和在txt文件中导入导出。目录1.设计内容和要求2.代码实现1.结构体定义2.全局变量和变量定义3.键盘输入信息4.信息显示5.文件导入导出......
  • C语言中if、else、switch的使用方法
    目录一、if语句1、以下是if语句的语法:2、else的表达形式二、switch语句C语言程序的构建基石是三大基本结构:顺序结构、选择结构(分支)与循环结构。理解这些结构及其组合应用,有助于深入学习并减轻初学者对C语言的畏难情绪。我们可以使用以下5个函数来构成结构体:if、switch(实......
  • C语言中for、while、do while、break、continue、goto的使用方法
    目录一、while循环二、for循环三、dowhile循环四:break和continue语句break语句continue语句goto语句今天介绍一下循环函数for、while、dowhile 然后再看一看break、continue、goto语句循环结构是必须要学习好的,几乎所有代码都会应用到循环结构一、while循环whi......
  • 7.17 C语言程序引言
    一、一个C语言程序运行程序,输入4,输出24,即4的阶乘    C程序由函数(Function,一种子程序)所组成。上述程序涉及4个函数:main()、factorial()、scanf()和printf()。其中,scanf()和printf()是系统事先设计好的函数,分别用于数据的输人和输出:factorial()是程序中定义的函......
  • C语言超市管理系统UI界面
    以下是部分源码,需要源码的+qq:2758566124 #include<easyx.h>#include<stdio.h>#include<stdlib.h>#definewidth1280#defineheight840#definefont_w35//字体宽度#definefont_h90//字体高度typedefstructnode{ charname[100];//名字 charnumb......
  • C语言中的结构体
    前言    在日常使用中,很容易就见到一些使用结构体封装的数据,通过使用结构体,可以编写出更加模块化和易于维护的C程序。在C语言中,结构体(Struct)是一种用户自定义的数据类型,它允许你将不同类型的数据项组合成一个单一的类型。通过使用结构体,你可以表示如学生信息、员工记录......