&&和||
c语言中提供了三种逻辑运算符:
&&(与运算)
||(或运算)
!(非运算)
与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。非运算符(!)为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下:
“&&”和“||”低于关系运算符,“!”高于算术运算符。#include "stdioh" 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的值,a++表示先使用a的值在加1,所以此处a值为5,--b表示先使b的值减1,所以此处b是3,记住++或者--在变量前面的话是先改变变量的值然后在使用,记住++或者--在变量后面的话是先使用变量的值,使用变量过后在改变变量的值,所以c的值为1(因为是整除),此时a的值在上面已经发生了改变变成了6,所以d的值为2。希望对你有帮助,谢谢
赋值运算符
赋值语句的作用是把某个常量或变量或表达阿式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。
注意:赋值语句左边的变量在程序的其他地方必须要声明。
得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。
例如:
count=5;
total1=total2=0;
第一个赋值语句大家都能理解。
第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0;然后total1=total2;那么我们这样行不行呢
(total1=total2)=0;
这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。
算术运算符
在C语言中有两个单目和五个双目运算符。
符号 功能
+ 单目正
- 单目负
乘法
/ 除法
% 取模
+ 加法
- 减法
下面是一些赋值语句的例子, 在赋值运算符右侧的表达式中就使用了上面的算术运算符:
Area=HeightWidth;
num=num1+num2/num3-num4;
运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。
取模运算符(%)用于计算两个整数相除所得的余数。例如:
a=7%4;
最终a的结果是3,因为7%4的`余数是3。
那么有人要问了,我要想求它们的商怎么办呢
b=7/4;
这样b就是它们的商了,应该是1。
也许有人就不明白了,7/4应该是175,怎么会是1呢这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写70/4或者7/40,也即把其中一个数变为非整数。
那么怎样由一个实数得到它的整数部分呢这就需要用强制类型转换了。例如:
a=(int) (70/4);
因为70/4的值为175,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下a=(float) (7/4);最终a的结果是多少
单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。
单目加运算符没有意义,纯粹是和单目减构成一对用的。
逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号 功能
&& 逻辑与
|| 逻辑或
! 逻辑非
例如:
5!3;
0||-2&&5;
!4;
当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
a=2,b=1;
a||b-1;
因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:
if(Amount=123) ……
很多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为 123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123) ……
自增自减运算符
这是一类特殊的运算符,自增运算符++和自减运算符--对变量的 *** 作结果是增加1和减少1。例如:
--Couter;
Couter--;
++Amount;
Amount++;
看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太清楚,看下面的例子:
num1=4;
num2=8;
a=++num1;
b=num2++;
a =++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为 9。
那么如果出现这样的情况我们怎么处理呢
c=num1+++num2;
到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。
复合赋值运算符
在赋值运算符当中,还有一类C/C++独有的复合赋值运算符。它们实际上是一种缩写形式,使得对变量的改变更为简洁。
Total=Total+3;
乍一看这行代码,似乎有问题,这是不可能成立的。其实还是老样子,'='是赋值不是等于。它的意思是本身的值加3,然后在赋值给本身。为了简化,上面的代码也可以写成:
Total+=3;
复合赋值运算符有下列这些:
符号 功能
+= 加法赋值
-= 减法赋值
= 乘法赋值
/= 除法赋值
%= 模运算赋值
<<= 左移赋值
>>= 右移赋值
&= 位逻辑与赋值
|= 位逻辑或赋值
^= 位逻辑异或赋值
上面的十个复合赋值运算符中,后面五个我们到以后位运算时再说明。
那么看了上面的复合赋值运算符,有人就会问,到底Total=Total+3;与Total+=3;有没有区别答案是有的,对于A=A+1,表达式A被计算了两次,对于复合运算符A+=1,表达式A仅计算了一次。一般的来说,这种区别对于程序的运行没有多大影响,但是当表达式作为函数的返回值时,函数就被调用了两次(以后再说明),而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。
条件运算符
条件运算符(:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。
<表达式1><表达式2>:<表达式3>
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
例如:
a=(b>0)b:-b;
当b>0时,a=b;当b不大于0时,a=-b;这就是条件表达式。其实上面的意思就是把b的绝对值赋值给a。
逗号运算符
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
假设b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
还有其他的如位逻辑运算符,位移运算符等等,我们等到讲位运算时再说明。
优先级和结合性
从上面的逗号运算符那个例子可以看出,这些运算符计算时都有一定的顺序,就好象先要算乘除后算加减一样。优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。
下面是C语言中所使用的运算符的优先级和结合性:
优先级 运算符 结合性
(最高) () [] -> 自左向右
! ~ ++ -- + - & sizeof 自右向左
/ % 自左向右
+ - 自左向右
<< >> 自左向右
< <=> >= 自左向右
(最低) , 自左向右
答案:
a&=b; == a=a&b;
a|=b; == a=a|b;
运算说明:
1、op=的运算符是C语言中一大类运算符,所有的op=形式运算符,写作a op= b时,均等效于a=a op b;
2、几乎所有的双目运算符,均有和赋值合并的op=运算符,包括+=,-=,=,/=,%=,&=,|=,^=,<<=,>>=等;
3、使用op=运算符,比使用a=a op b的形式要高效。
4、位运算 *** 作时, *** 作数参与运算是逐位运算的,对应的每位进行运算并形成结果的对应位。
5、&按位与运算规则为两个 *** 作数相同位上的值均为1,那么结果的该位上值为1, 否则为0。
6、|按位或运算规则为两个 *** 作数相同位上的值均为0,那么结果的该位上值为0, 否则为1。
符号说明:
&&是和运算,A && B用来测试A和B两个条件是不是都成立。
!是非运算,!A 取A的相反。
!的优先级大于 &&,也就是!先运算。
C语言中的逻辑运算符:&&(与运算)、||(或运算)、!(非运算)。
与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。非运算符(!)为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下:
本来没有错误,关系运算符都是按“非与或”顺序来运算的。但是,不同的编译器设计者可能对这个的认识不同,因此,如果不加括号就会有歧义,因此,编译器就会提醒应该加括号(编译中有警告:waring),但你不加,也不算错,只是其结果就是按编译器的运算顺序来 *** 作了。
&&是与,||是或;
&是位与,|是位或;
|就是按住shift在按回车上面一个按钮;
两下就是||;
这个不是错误,是警告warning,编译器怕记不住 *** 作符优先级,而导致错误,因此提示||的优先级高于!=。
扩展资料
C语言内置了丰富的运算符,大体可分为10类:算术运算符、关系运算符、逻辑运算符、位 *** 作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。
根据运算符可 *** 作的 *** 作数的个数,可把运算符分为一元运算符、二元运算符和多元运算符(一般三元)。优先级:当不同运算符优先级不同时,先计算谁后计算结合性:当不同运算符优先级相同时,先计算谁后计算谁。
同&&
或||
异!
:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
参考资料:C语言_百度百科
在C语言中如何表示 非,且,或 且为&&,比如x<3&&x>1意思就为1<x<3或为||,比如x<1||x>3意思就是x小于1或者大于3
非为!,比如!0,意思就是非0
在c语言中-x+7如何表示
就这样表示就可以了,比如说:
int x,y;
y=-x+7;
prinf("%d\n",y);
C语言中,何为素数?何为非素数?用C语言如何表示?
C语言中的素数和数学中的素数是一样的,即:除了1和它本身之外,不能被任何数整除的数(1不是素数)。也就是说素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。
非素数的定义就很明了了,素数以外的数都是非素数,在C语言中,求素数的方法,就是从2开始,依次判断该数是否可以被2以上到该数以下的数整除,如果可以,就不是素数,如果不可以被所有大于或等于2小于该数的整数整除,那么就是素数了
1÷(2i+1)在c语言中如何表示
你好,是这样
1/(2i+1)
望采纳
C语言中如何表示y=sinx+cosx
首先要包含标头档案#include <mathh>
然后定义两个float或者double型别的变数x,y
y = sin(x) + cos(x);
谢谢采纳
c语言中a到z,递增如何表示
如果a和z都是整数
for(i=0;i<(z-a);i++)
{
a++
printf("%d",a)
}
如果是字母
char a='a',z='z';int c,i;
c='z'-'a'
for(i=0;i<c;i++)
printf("%c",a+i)
c语言中2的20次幂如何表示
^是逻辑运算的异或(XOR)
幂应该用函式power
mathh
double pow(double x, double y)
x 底数,y 幂数
所以有
pow(2,20);
C语言中 B大于A小于C 如何表示?
B>A&&B<C
c语言中如何表示2ab除以cd
2ab/(cd)
注意资料型别,如果全部都是整数的话,除法将会丢弃小数位。
在C语言中,在VC程式中,复数如何表示
在FORTRAN语言中是有复数的。(最早的语言)
表示方法为(a,b)---a实部b虚部。FORTRAN语言可以复数计算。
在C语言中,在VC程式中可能是没有的。
你要用可以自己在C语言中用复数计算规则自己扩充套件。VC程式扩充套件更方便了,型别与运算 *** 作符过载。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)