广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中的运算类型有哪些
  • 395
分享到

C语言中的运算类型有哪些

2023-06-30 07:06:13 395人浏览 独家记忆
摘要

这篇文章主要介绍“C语言中的运算类型有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中的运算类型有哪些”文章能帮助大家解决问题。一、概述C语言中支持下面4种类型的运算运算类型运算符四则运算

这篇文章主要介绍“C语言中的运算类型有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中的运算类型有哪些”文章能帮助大家解决问题。

一、概述

C语言中支持下面4种类型的运算

运算类型运算符
四则运算+,-,*,/,%
关系运算<,>,<=,>=,==,!=
逻辑运算&&,||,!
位运算&,|,^,>>,<<,~

二、四则运算

(+,-,*,/,%)

  • 就是数学中的加,减,乘,除等运算

  • 遵循先乘除后加减的运算优先级

  • 可以使用括号改变运算顺序

C语言中的运算类型有哪些

注意:

C语言中的除法运算,其除数不能为0

下面通过一段程序感受一下:

#include <stdio.h>int main(){    int a = 5;    int b = 2;    double c = 3;    c = a / b;    printf("c = %f\n", c);    c = a % b;    printf("c = %f\n", c);    return 0;}

下面为输出结果:

C语言中的运算类型有哪些

通过上面的代码,可以得到一些小结论:

  • 整型数的除法运算结果会舍弃小数部分

  • 取余(%)运算也是一种除法运算,结果为余数

  • 浮点数不能进行取余运算

三、关系运算

(<,>,<=,>=,==,!=)

  • 比较两个值大小关系或相等关系的运算

  • 比较的结果为逻辑值: 真(1),假(0)

  • 可以使用括号()改变关系运算的顺序

C语言中的运算类型有哪些

如上面的图片所示,c 的值就为0

下面通过一段代码,感受一下:

#include <stdio.h>int main(){    int a = 1;    int b = 2;    int c = 3;    c = a != b;    printf("c = %d\n", c);    c = a - b >= a + b;    printf("c = %d\n", c);    c = (a < b) + (c < b);    printf("c = %d\n", c);    return 0;}

下面为输出结果:

C语言中的运算类型有哪些

小技巧:如果不同类型的运算同时出现在一个表达式中,那么尽量使用括号()指明运算顺序。

运算优先级(优先级:四则运算 > 关系运算 > 赋值操作)

四则运算

  • 正负号 > 乘除运算 > 加减运算

关系运算

  • 大小比较运算 > 相等比较运算

赋值操作

下面看一段代码,深入感受一下运算优先级:

#include <stdio.h>int main(){    int a = 1;    int b = 2;    int c = 0;    c = a != b + a * b;    printf("c = %d\n", c);    return 0;}

下面为输出结果,可以看出,c 的输出结果为1,为什么为1呢?这是由于乘法优先级大于加法优先级大于关系运算优先级,所以程序执行过程是这样,先计算 a * b,然后将 a * b 的结果 2 加上 b,得到4,最后再比较 a != 4,得到的结果当然为1啦,我们还可以通过反汇编来观察代码的执行过程。

C语言中的运算类型有哪些

C语言中的运算类型有哪些

c = a != b + a * b的汇编代码

所以如果想得到a != b 再加上a * b的结果,一定要记得加括号,如下:

#include <stdio.h>int main(){    int a = 1;    int b = 2;    int c = 0;    c = (a != b) + (a * b);    printf("c = %d\n", c);    return 0;}

这样才能得到正确结果,如下所示:

C语言中的运算类型有哪些

小结:

  • 整型数除法有两种:取商(/),取余(%)

  • 浮点数除法与数学中除法运算相同,结果为浮点数

  • 不同运算的优先级不同,可使用括号改变运算优先级

  • 同一个表达式中应避免不同的运算类型(四则运算,关系运算)

四、逻辑运算与位运算

逻辑运算(&&,ll,!)

  • 逻辑运算的参与者为逻辑值(真或假)

  • 任何非零值在逻辑运算中都为真

  • 任何零值在逻辑运算中都为假

&&运算
左操作数右操作数结果
000
010
100
111
||运算
左操作数右操作数结果
000
011
101
111

逻辑运算中的短路法则

对于&&运算

  • 从左向右进行,如果有一个操作数为假,则整个表达式为假

  • 第一个为假的操作数之后的其它操作数不再计算

对于||运算

  • 从左向右进行,如果有一个操作数为真,则整个表达式为真

  • 第一个为真的操作数之后的其它操作数不再计算

取非运算(!)

单目运算(只需要一个操作数),运算结果为逻辑值

  • 对真值取非的结果为假

  • 对假值取非得结果为真

话不多说,上代码:

#include <stdio.h>int main(){    int a = 1;    int b = 2;    int c = 0;    c = a && b;    printf("c = %d\n", c);    c = !(a - b) || (c < b);    printf("c = %d\n", c);    c = 10000;    c = !!c;    printf("c = %d\n", c);    return 0;}

下面为运行结果:

C语言中的运算类型有哪些

位运算(&,|,~,^,<<,>>)

  • 直接对数据的二进制位进行操作

  • 位运算的基本单位是二进制位,所以也是一种0和1的操作

  • 可以使用括号()改变位运算的运算顺序

  • 位运算的操作数只能是整型数(浮点数不能直接进行位运算)

运算符含义示例优先级
~按位求反~0101 -> 10101(高)
<<左移:高位移出,低位补00011 << 1 -> 0110 2
>>右移:低位移出,高位补符号位0101 >> 2 -> 00012
&按位与0111 & 1100 -> 01003
^按位异或:相同为0,不同为10111 ^ 1100 -> 10114
|按位或0111 | 1100 -> 11115(低)

注:

按位与和逻辑与的计算法相同:两者为1,结果为1,否则为0

按位或和逻辑或的计算法相同:两者为0,结果为0,否则为1

位运算实例

  • 将整数5的第2个二进制位置1

  • 将整数7的第4个二进制位取反

  • 将整数2的最后两位取反

  • 将整数15右移2位,再将第2个二进制位置0

  • 设变量a的二进制数是10101101,若想通过运算a ^ b使得a的中间4位取反,其余位不变,则b的值是多少?

代码如下:

#include <stdio.h>int main(){    printf("c = %d\n", 5 | 2);    printf("c = %d\n", 7 ^ 8);    printf("c = %d\n", 2 ^ 3);    printf("c = %d\n", (15 >> 2) & 13);    printf("c = %d\n", 173 ^ 60);    return 0;}

运行结果如下:

C语言中的运算类型有哪些

这里需要特别注意:对某一位或者某几位取反可以用异或(^)运算,这在工程里常用!!!

运算优先级(优先级从上到下为由高到低)

  • 正负号>逻辑非>按位取反

  • 乘除>加减>按位左右移

  • 大小比较运算>相等比较运算

  • 按位与>按位异或>按位或

  • 逻辑与>逻辑或

  • 赋值操作

小结

  • 逻辑运算中有特殊的短路法则,结果确定后不再向下计算

  • C语言中的真值对应非零值,假值对应零值

  • 位运算直接对数据的二进制位进行操作

  • 位运算的操作数只能是整型数(浮点数不能直接进行位运算)

五、深度剖析位运算

不同类型的本质在于:

占用的内存大小不同,如:short占用2字节,int占用4字节

表示具体数据的方式不同

  • 正整数用原码表示,负整数用补码表示

  • 整数型和浮点型的二进制表示不同

位运算时需要明确的知道的事

  • 操作数的类型(占用的内存大小)

  • 操作数是正数还是负数(符号位,数据表示)

  • 不同类型的操作数先自动对齐再进行位运算(补符号位)

如下面的一段代码:

short a = 1;int b = 4;int c = a | b;printf("c = %d\n",c);

b为int类型,占4个字节,a为short类型,占2个字节。所以a要先要补符号位,由于a是正数,所以补0,这样就可以进行位运算了,得出c的结果为5。

C语言中的运算类型有哪些

下面来看一段代码:

#include <stdio.h>int main(){    short a = 1;    short b = 2;    int c = a - b;    c = c >> 4;    printf("c = %d\n", c);    c = c * -1 * 16 >> 4;    printf("c = %d\n", c);    printf("c = %d\n", 16 << 2);    return 0;}

下面为输出结果:

C语言中的运算类型有哪些

小结论

  • 正数符号位为0,右移运算时,高位补0,低位移除

  • 负数符号位为1,右移运算时,高位补1,低位移除

  • 左移运算时,最高位移除,低位补0

  • 最高位的具体位置,由数据类型决定

类型补充小知识

  • char 字符型,一个字节的整型,范围[-128,127]

  • 字符数据(单引号括起来的字符)的本质是整型数

  • char类型的变量可以打印为整数或者字符

再看一段代码:

#include <stdio.h>int main(){    char c = 'A';    short a = c;    int b = c;    printf("c = %c\n", c);    printf("c = %d\n", c);    printf("a = %d\n", a);    printf("b = %d\n", b);    c = 0x40;    printf("c = %x\n", c);    printf("c = %d\n", c);    c = c << 1;    printf("c = %d\n", c);    c = c << 1;    printf("c = %d\n", c);    return 0;}

下面为输出结果:

C语言中的运算类型有哪些

需要注意的是,因为c为char类型,所以64左移1位后,用二进制表示为1000 0000,最高位的1表示符号位,所以就是-128。

小结

  • 不同类型的本质区别是:占用内存不同,数据表示不同

  • 右移运算时,高位补符号位,低位移除

  • char是只占用一个字节的整型,可表示英文字符

  • 数据符号位的具体位置由数据类型决定

关于“C语言中的运算类型有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: C语言中的运算类型有哪些

本文链接: https://www.lsjlt.com/news/327773.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中的运算类型有哪些
    这篇文章主要介绍“C语言中的运算类型有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中的运算类型有哪些”文章能帮助大家解决问题。一、概述C语言中支持下面4种类型的运算运算类型运算符四则运算...
    99+
    2023-06-30
  • c语言的逻辑运算有哪些
    C语言中的逻辑运算有以下几种:1. 逻辑与运算(&&):表示两个条件同时满足时返回true,否则返回false。2. 逻辑或运算(|...
    99+
    2023-08-15
    c语言
  • C语言中数据类型有哪些
    这篇文章主要为大家展示了“C语言中数据类型有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中数据类型有哪些”这篇文章吧。数据的存储首先就要说到数据的类型,类型决定了看待内存空间的视角。...
    99+
    2023-06-25
  • C语言中的基本算术运算符有哪些
    这篇文章主要介绍“C语言中的基本算术运算符有哪些”,在日常操作中,相信很多人在C语言中的基本算术运算符有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中的基本算术运算符有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • c语言取模运算规则有哪些
    C语言中的取模运算(%)遵循以下规则:1. 如果两个操作数中有一个或两个都为负数,结果的符号与被除数相同。例如:-5 % 2 的结果...
    99+
    2023-09-14
    c语言
  • c语言标识符有哪些类型
    本教程操作环境:windows7系统、c99版本、Dell G3电脑。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。c语言标识符...
    99+
    2022-11-28
    C语言 标识符 用户标识符
  • c语言标识符类型有哪些
    这篇文章主要讲解了“c语言标识符类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言标识符类型有哪些”吧!c语言标识符有三类:1、关键字,是由C语言规定的具有特定意义的字符串,通常...
    99+
    2023-07-04
  • C语言中各种运算类型全面总结
    目录一、概述二、四则运算三、关系运算四、逻辑运算与位运算五、深度剖析位运算一、概述 C语言中支持下面4种类型的运算 运算类型运算符四则运算+,-,*,/,%关系运算<,>...
    99+
    2022-11-13
  • python中的运算符有哪些类型
    python运算符类型分为:1.算术运算符;2.比较运算符;3.逻辑运算符;python中的运算符有算术运算符、比较运算符和逻辑运算符三种类型算术运算符算术运算符是指算术运算的符号,是完成基本算术运算的符号,如+(加)、-(减)、*(乘)、...
    99+
    2022-10-21
  • PHP中有哪些类型的运算符
    PHP中有哪些类型的运算符,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1:算数运算符:-:-$a 取反 $a 的负值。+:$a + $b 加法 $a 和 $b 的和。-:$a...
    99+
    2023-06-17
  • c语言的基本数据类型有哪些
    C语言的基本数据类型有以下几种:1. 整型(int):用于表示整数,包括正整数、负整数和零。可使用关键字int声明,占用4个字节。2...
    99+
    2023-09-20
    c语言
  • C语言基础的类型转换有哪些
    小编给大家分享一下C语言基础的类型转换有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类型转换数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。转换包括隐式类型转换和强制类型转换。类型转换的原则...
    99+
    2023-06-25
  • Go语言中的运算符有哪些
    Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符;11、左移运算符;12、右移运算符。详细介绍:1、...
    99+
    2023-12-22
    go语言 运算符
  • Python中有哪些运算符类型
    这篇文章将为大家详细讲解有关Python中有哪些运算符类型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python运算符之1)混合模式运算符Python支持不同的数字类型相加。>&g...
    99+
    2023-06-17
  • javaScript的语言类型有哪些
    JavaScript是一种动态型的语言,编译器只能在执行时检测到语言错误,而不是在编译期间。同时,JavaScript也是一种解释型的语言,它不需要先将代码编译成可执行的二进制代码,而是在执行过程中逐行解释代码。在JavaScript中,有...
    99+
    2023-05-14
  • R语言运算符有哪些
    这篇文章给大家分享的是有关R语言运算符有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 R语言具有丰富的内置运算符,并提供以下类型的运算符。运算符的类型R...
    99+
    2023-06-14
  • c语言移位运算的实现方式有哪些
    C语言中移位运算有两种方式:左移和右移。1. 左移运算:用">"表示,将一个数的各二进位全部右移若干位,低位丢弃,高位补0或补1,取...
    99+
    2023-09-14
    c语言
  • go语言有哪些类型
    go语言的类型有布尔型(bool)、整型(int8、byte、int16等)、浮点型(float32、float64)、复数类型(complex64、complex128)、字符串、字符型、错误型、指针、数组、切片、字典、通道、结构体、接口...
    99+
    2023-05-14
    Go go语言 Golang
  • go语言类型有哪些
    go语言类型有布尔类型、整数类型、浮点数类型、字符串类型、数组类型、切片类型、结构体类型、字典类型、函数类型等。详细介绍:1、布尔类型只有两个值,即true和false;2、整数类型包括int8、int16、int32、int64和相应的无...
    99+
    2023-07-31
  • C语言中的变量类型有哪些及怎么用
    本篇内容主要讲解“C语言中的变量类型有哪些及怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中的变量类型有哪些及怎么用”吧!一。变量的类型告诉编译器怎么处理这个变量的数据。 ...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作