‘壹’ c语言中算术运算、关系运算、逻辑运算的定义是什么
算术运算就是指加减乘除和整数的模运算(即取余数运算);
关系运算指比较,有大于、大于等于、小于、小于等于、等于、不等于六种运算;
逻辑运算指两个条件进行运算,有逻辑与、逻辑或、逻辑非三种。
‘贰’ C语言中的计算符号 计算机是怎么算的
简单说就是,在计算机中有一个运算器(只可以做减法运算(存在于CPU中))。
定义的b=1,c=5,
在C语言上,系统会把1赋值给b,5赋值给c,存放在内存单元中.(“="是赋值符,1,5为整型数而分配整型单元的内存空间。)
在运算a=b+c时,系统会检索内存中的b和c的值,之后系统所检索到的就是a=1+5,
在"1+5"中,系统会进行减法运算,算出1+5的值,然后赋值给a,放在a所在的内存空间中。
‘叁’ 计算机C语言运算符运算顺序问题
C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。
运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
一级运算符:标识,常量,字符串文字量,优先级提升表达式最优先执行。
二级运算符:数组下标运算(expression)、函数调用(argument-expression-list)、成员访问(identifier、-> identifier)、后缀自增(i++)、后缀自减(i--)、复合初始化(initializer-list)。
三级运算符:前缀自增(++i)、前缀自减(--i)、单目转型表式式(取地址& ,提领 * , 正号+ ,负号-、位反~ 逻辑否!)、求类型长度(sizeof unary-expression)。
四级运算符:强制表达式成为type-name指定的类型( type-name ) cast-expression。
五级运算符:“ * ” 乘法运算符。
六级运算符:“ + ”加法运算符。
七级运算符:<<左移运算符;>>右移运算符。
八级运算符:<、<=、>、>=关系运算符。
九级运算符:“ == ”等于运算符;“ != ”不等于运算符。
十级运算符:“ & ”按位与运算符。
十一级运算符:“ ∧ ”按位异或运算符。
十二级运算符:“ | ”按位或运算符。
十三级运算符:“&&”逻辑与运算符。
十四级运算符:“ || ”逻辑或运算符。
十五级运算符:? :条件运算符。
‘肆’ c语言怎么进行算术运算
#include "stdio.h" void main() { int a,b,c; scanf("%d%d",&a,&b); c=a+b; printf("%d\n",c); getch(); }
具体如下:
1、简介C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
2、基本介绍
C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。
3、运算
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,对此合理进行分类,找出它们与数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
‘伍’ C语言中,有哪些算术运算符
C语言中算术运算符有以下这些
实例:
#include<stdio.h>
intmain()
{
inta=21;
intb=10;
intc;
c=a+b;
printf("Line 1 - c 的值是 %d ",c);
c=a-b;
printf("Line 2 - c 的值是 %d ",c);
c=a*b;
printf("Line 3 - c 的值是 %d ",c);
c=a/b;
printf("Line 4 - c 的值是 %d ",c);
c=a%b;
printf("Line 5 - c 的值是 %d ",c);
c=a++; // 赋值后再加 1 ,c 为 21,a 为 22
printf("Line 6 - c 的值是 %d ",c);
c=a--; // 赋值后再减 1 ,c 为 22 ,a 为 21
printf("Line 7 - c 的值是 %d ",c);
return0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 21
Line 7 - c 的值是 22
(5)c语言中计算机运算扩展阅读:
C语言中,除了算数运算符,还提供以下运算符:
1、关系运算符
2、逻辑运算符
3、位运算符
4、赋值运算符
5、杂项运算符
运算符优先级:
C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
运算符结合性:
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。
如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。
最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
‘陆’ C语言中的基本运算问题
整数的加减运算
要用8个bit表示正数和负数,一种简单的思路是把最高位当作符号位(Sign Bit),0表示正1表示负,剩下的七位表示绝对值的大小,这称为Sign and Magnitude表示法。例如-1表示成10000001,+1表示成00000001。思考一下,N个bit的Sign and Magnitude表示法能够表示的最大整数和最小整数分别是多少?请写出算式。
计算机要对这样的两个数做加法运算需要处理以下逻辑:
如果两数符号位相同,就把它们的低7位相加,符号位不变。如果低7位相加时在最高位产生进位,则结果超出7位所能表示的数值范围,这称为溢出(Overflow),通常把计算机中的一个标志位置1表示产生溢出。
如果两数符号位不同,首先比较它们的低7位谁大,然后用大数减小数,结果的符号位和大数相同。
减法运算需要处理以下逻辑:
如果两数符号位相同,并且低7位是大数减小数,则符号位不变,如果低7位是小数减大数,则按大数减小数计算,结果要变号。
如果两数符号位不同,把低7位相加,如果是正数减负数则结果为正,如果是负数减正数则结果为负,低7位在相加时可能产生溢出。
这其实和手算加减法的逻辑是相同的。算加减法需要处理这么多逻辑:比较符号位,比较绝对值,加法改减法,减法改加法,小数减大数改成大数减小数……这是非常低效率的。还有一个缺点是0的表示不唯一,既可以表示成10000000也可以表示成00000000,进一步增加了逻辑的复杂性,所以我们迫切需要重新设计数的表示方法,以使计算过程更简单。
有一种方法可以把减法全部转化成加法来计算,这样就不必设计加法器和减法器两套电路了。我们以十进制减法为例来理解一下这种方法。比如
167-52=167+(999-52)-1000+1=167+947-1000+1=1114-1000+1=114+1=115
首先把52换成999-52,也就是947,这称为取9的补码(9's Complement),虽然这也是减法但它不需要借位,只需要对每一位数字分别取补码,所以比一般的减法要简单得多。然后把167和947相加,百位上的进位舍去,得到114,然后再加1得到115[22],这就是最终结果了。一句话概括就是:减去一个数等于加上这个数取9的补码再加1(忽略最高位的进位)。
这种方法也可以类推到二进制加减法:减去一个数等于加上这个数取1的补码(1's Complement)再加1(忽略MSB的进位)。取1的补码就是1-1=0,1-0=1,其实相当于把每一位数字取反了,以后将1的补码简称为反码。比如
00001000-00000100->00001000+11111011+1->00000011+1=00000100
上式的前两步不是等价变换,所以没有用=号而是用->表示,第一步多加了一个100000000,第二步少加了一个100000000,效果相互抵消,所以最终结果正是00001000-00000100的结果。现在我们发现,如果把第一步写成00001000+(-00000100)->00001000+11111011+1,则11111011+1就可以用来表示负数-00000100。所以,补码表示法不仅可以把减法转化为加法,而且合理地规定了负数的表示方法,就是“先取反码再加1”。负数的这种表示称为2的补码(2's Complement),以后简称为补码。为什么称为2的补码呢?因为如果对一位数取补码,则1的补码是1-1+1=10-1=1,相当于从2里面减去1。类似地,对00000100取补码是11111111-00000100+1=100000000-00000100,相当于从100000000(十进制的256)里面减去00000100。
将负数全部用补码表示之后,8个bit可以表示的正数有00000000~01111111(十进制的0~127),负数有10000000~11111111(十进制的-128~-1),合起来是十进制的-128~127,一共256个数,而8个bit最多可以表示28=256个不同的数,所以已经充分利用了这8个bit,每个数都只有一种表示,0也只有一种表示就是00000000。我们还发现,所有正数的最高位是0,所有负数的最高位是1,因此最高位仍然具有符号位的含义,要检查一个数是正是负只要看最高位就可以了,但在计算时却可以把符号位和数放在一起做加法运算,而不必像Sign and Magnitude表示法那样对符号位单独处理。
采用补码做加减运算时总是忽略MSB的进位,这让人很不放心:如果在计算过程中忽略进位的效果没有相互抵消怎么办?如果没有相互抵消,最后的结果肯定是错的,这种情况一定是由溢出引起的。只要我们有办法判断哪些情况会产生溢出,其它情况下都可以放心地忽略MSB的进位。判断溢出的办法是这样的:在相加过程中最高位产生的进位和次高位产生的进位如果相同则没有溢出,否则就说明产生了溢出。逻辑电路的实现可以把这两个进位连接到一个异或门,把异或门的输出连接到溢出标志位。对于8位二进制数的加减运算来说,当计算结果超出-128~127的范围时就会溢出,例如:
10000010 -126
+ 11111000 + -8
100000000 进位
---------- -----
01111010 = 122?最高位产生的进位是1,次高位产生的进位是0,说明溢出了,计算结果换算成十进制是122,这显然不对,根本原因是(-126)+(-8)=-134超出了8位二进制数能表示的范围。
用8个bit既表示正数又表示负数,则能够表示的范围是-128~127,如果8个bit全部表示正数,则能够表示的范围是0~255,前者称为有符号数(Signed Number),后者称为无符号数(Unsigned Number)。但是计算机在做加法时并不区分操作数是有符号数还是无符号数,计算过程都是一样的,所以上面的例子也可以看作无符号数的加法:
10000010 130
+ 11111000 + 248
100000000 进位
---------- -----
01111010 = 122+256把两个操作数看作无符号数分别是130和248,计算结果换算成十进制是122,最高位的一个进位相当于256,122+256这个结果是对的。计算机的加法器在做完计算之后,根据最高位产生的进位设置进位标志,同时根据最高位和次高位产生的进位的异或设置溢出标志。至于这个加法到底是有符号数加法还是无符号数加法则取决于程序怎么理解了,如果程序把它理解成有符号数加法,就去检查溢出标志,如果程序把它理解成无符号数加法,就去检查进位标志。通常计算机在做算术运算之后还可能设置另外两个标志,如果结果为零则设置零标志,如果结果的最高位是1则设置负数标志(只有当理解成有符号数运算时才去检查这个标志)。
--------------------------------------------------------------------------------
[22] 也可以看作是把百位上的进位加回到个位上去,本来应该加1000,结果加了1,少加了999,正好把先前多加的999抵消了。
‘柒’ C语言中能进行数学运算的运算符包括哪些
C语言中能进行数学运算的运算符包括三类:
一、常规的数学运算,包括加(+),减(-),乘(*),除(/),和模除(%)。
形式为
a op b
结果为对应的数学运算结果。
其中模除%又称作取余,计算a除以b得到的余数,是唯一一个只能用来做整型计算的数学运算符。
二、自加(++)自减(--)运算:
自加和自减属于单目运算,使用后使变量自加1或者自减1.有前置自加自减和后置自加自减区别。形式为
++a, a++, --a, a--,
四种。
三、带赋值的运算,即在一中提到的物种运算符加上=,组合成复合运算符+=, -=, *=, /=和%=.
对于这类运算符,形式为
a op b
表示a=a op的前一个符号 b。
比如
a+=b
等效于
a=a+b
这是一类特殊的数学运算操作符。
‘捌’ 计算机C语言的运算
可以在程序中设置,一般都是用输入函数输入~~~
‘玖’ 关于C语言中计算机的加法运算法则
x++&&y++
结果为
0&&0
是0,
所以执行
0
||z++,
z++是0,0||0
=0
0&&y++就跳过了y的运算
所以
x=1
y=0
z=1