c++逗号运算符

c++中的圆括号

这是用的逗号运算符,逗号运算符的规则是用逗号隔开的算式都会计算,但是结果是最后的一个算式的值,
x=3,//这个使x为3
y=8,//这个使y为8
x*=y+1//这个等价于x=x*(y+1)=3*(8+1)=27;
所以结果是27

c语言中有哪些运算符,各有什么功能

加法运算符 

1、移位运算符 

2、 关系运算符 

3、相等运算符 

4、 位与运算符 

5、位异或运算符 

6、 位或运算符 

7、 逻辑与运算符 

8、 逻辑或运算符 

9、 三元条件运算符 

10、 赋值运算符 

12、逗号运算符 

13、优先级

功能介绍:

1、赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示;

2、算术运算符在C语言中有两个单目和五个双目运算符;

3、逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值;

4、关系运算符是对两个表达式进行比较,返回一个真/假值;

5、自增自减运算符,这是一类特殊的运算符,自增运算符++和自减运算符–对变量的操作结果是增加1和减少1;

6、赋值运算符,还有一类C/C++独有的复合赋值运算符。它们实际上是一种缩写形式,使得对变量的改变更为简洁;

7、条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个;

8、逗号运算符在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值;

9、优先级和结合性,这些运算符计算时都有一定的顺序,就好象先要算乘除后算加减一样。优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。

c语言中“a!”与 “!a”有什么区别

a!如果后面没有跟别的东西,那么这种语法是错误的,!a代表取反,如果用在判断里面,那么!a就是不满足a的条件,或者说a本来为真,现在判断就是为假

c++各类运算优先级

C++的优先级
优先级 操作符 结合性
1 :: 左
2 . -》 () 左
3 ++ — ~ ! – + & * () sizeof new delete castname_cast《type》 单目操作符 右
4 .* -》* 左
5 * / % 左
6 + – 左
7 《《 》》 左
8 《 《= 》 》= 左
9 == != 左
10 & 左
11 ^ 左
12 | 左
13 && 左
14 || 左
15 ?: 右
16 = *= /= %= += -= 《《= 》》= &= |= ^= 右
17 throw 左
18 , 左
C的优先级
一、赋值运算符
赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。
注意:赋值语句左边的变量在程序的其他地方必须要声明。
得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。
例如:
count=5;
total1=total2=0;
第一个赋值语句大家都能理解。
第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0;然后total1=total2;那么我们这样行不行呢?
(total1=total2)=0;
这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。
二、算术运算符
在C语言中有两个单目和五个双目运算符。
符号 功能
+ 单目正
– 单目负
* 乘法
/ 除法
% 取模
+ 加法
– 减法
下面是一些赋值语句的例子, 在赋值运算符右侧的表达式中就使用了上面的算术运算符:
Area=Height*Width;
num=num1+num2/num3-num4;
运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。
取模运算符(%)用于计算两个整数相除所得的余数。例如:
a=7%4;
最终a的结果是3,因为7%4的余数是3。
那么有人要问了,我要想求它们的商怎么办呢?
b=7/4;
这样b就是它们的商了,应该是1。
也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。
那么怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。例如:
a=(int) (7.0/4);
因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下a=(float) (7/4);最终a的结果是多少?
单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。
单目加运算符没有意义,纯粹是和单目减构成一对用的。
三、逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号 功能
&& 逻辑与
|| 逻辑或
! 逻辑非
当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
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 自右向左
* / % 自左向右
+ – 自左向右
《《 》》 自左向右
《 《= 》 》= 自左向右
== != 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
= += -= *= /= %= &= ^= |= 《《= 》》= 自右向左
(最低) , 自左向右

c++题目 请写出以下表达式的运算类型(逗号、关系、逻辑、条件):a=b)&&(x<=y)______

逻辑&& 运算符&& 运算符被称为逻辑与运算符。它需要两个表达式作为操作数,并创建一个表达式,只有当两个子表达式都为 true 时,该表达式才为 true。

C++中逗号和分号的区别是什么

可以这么理解:
分号相当于我们汉语中句号,表示一句话说玩了,即一个表达式的结束.
逗号后面还有这句话的内容,后面还有该表达式的内容.

谁能给我详细讲下c++运算符的运算规则,最好能举例!

优先级 运算符 功能说明 结合性 2 ~ 按位求反 右结合2 ++ —— 增1减1运算符 右结合2 + — 取正取负运算符 右结合3 * / % 乘法,除法,取余 左结合4 + – 加法,减法 左结合5 《《 》》 左移位,右移位 左结合6 《 》 《= 》= 小于,大于,小于等于,大于等于 左结合7 == != 等于,不等于 左结合8 & 按位与 左结合9 ^ 按位异或 左结合10 | 按位或 左结合 11 && 逻辑与 左结合 12 | | 逻辑或 左结合13 ?: 条件运算符 右结合14 = += -= *= /= %= 《《= 》》= &=^= |= 赋值运算符 右结合15 , 逗号运算符 左结合 使用运算符时,要注意以下几点:(1) 运算符实现的功能。(2) 运算符个数及类型。(3) 运算符的优先级别。(4) 运算符的优先级别。1. 算术运算符及算术表达式: c++中的算术运算符有:+(取正或加),-(取负或减),*(乘),/(除),%(取余),++(增1),–(减1)。其中+(取正),-(取负),++(增1),–(减1)是单目运算符,其余是双目运算符。 +,-,*,/ 运算符与其在数学中的意义,优先级,结合性基本相同。但必须注意“/”运算符,当它的两个操作数都是整数时,其计算结果也是整型,结果为两整数相除后的商。例,3/2的结果是1,3/5的结果是0. 运算符“%”是取余运算,结果为两个整数相除后的余数。例如,5%3的结果是2,6%2结果是0. 注意:要求取余运算符“%”的两个操作数必须是整型或字符型数据。 增1,减1运算是将变量的值增1或减1.这两个运算符都有前置和后置两种形式。前置形式是先计算操作数的值(增1或减1),然后把操作数的值作为表达式的结果。而后置形式是先将操作数的值作为表达式的结果,然后将操作数的值(增1或减1)。2. 关系运算符及关系表达式: 关系运算是比较两个操作数的大小。当两个操作数满足关系运算符指定的关系时,表达式的值为true,否则为false。 在c++中,关系运算符都是双目运算符,共有6个:《(小于)《=(小于等于)》(大于)》=(大于等于)==(等于)!=(不等于)。其中前4种和后2种属于不同的优先级,前4种的优先级高于后2种。 由关系运算符和操作运算符组成的表达式为关系表达式,关系表达式的结果为布尔类型。3. 逻辑运算符及逻辑表达式: 逻辑运算符共有3个:1个单目运算符“!”,2个双目运算符“&&”(逻辑与)和“||”(逻辑或)。其中逻辑与的优先级比逻辑或高。 逻辑运算的结果是逻辑值。参与逻辑运算的操作数可以是任一基本类型的数据,在进行判断时,系统将非零值作为真,零为假。 对于单目运算符“!”(逻辑求反),若其操作数为false(0),运算结果为true(1),否则为false(0)。例如,!5的结果为0. 对于“&&”(逻辑与)运算符,只要两个操作数中有一个为false(0),运算结果就为false(0),否则true(1).例如,2&&5的结果为1. 对于“||”(逻辑或)运算符,只要两个操作数中有一个为true(1),运算结果就为true(1),否则为false(0)。例如,5||0的结果为1. 由逻辑预算副和操作数构成的表达式为逻辑表达式,逻辑表达式的结果为布尔类型。 注意:当多个“||”(逻辑或)运算符,只要两个操作数中有一个为true(1),运算结果就为true(1),否则则为false(0),停止后续计算,例如:a=0,b=2,c=3;表达式a++||b++||c++运算后,整个表达式值为true(1),a的值为1,b的值为2,c的值为3.4. 赋值运算符和赋值表达式: c++中的赋值运算符分两种:简单赋值运算和复合赋值运算符。赋值运算符都是二元运算符,右结合。由赋值运算符和操作数组成的表达式称为赋值表达式。(1)简单赋值运算符 c++中的简单赋值运算符为“=”。其表达式的一般形式为: 变量=表达式 该表达式执行时,先计算赋值运算符右部“表达式”的值,然后将它赋给左边的变量。赋值表达式的值为左边变量的值,其类型为左边变量的类型。(2) 复合赋值运算符: 复合赋值运算符由一个基本赋值运算符和其他一些运算符复合构成,共有10个,分别为:+=,-=,*=,/=,%=,《《=,》》=,&=,^=,|=. 如果以“op”表示某种运算符,则复合赋值表达式的一般形式为: 变量op=表达式 等价于: 变量=变量op表达式 即先用左部变量和右部表达式作数值运算,然后将运算结果送给左部变量。例如: a+=3 等价于 a=a+3 使用复合赋值运算符不仅书写简练,而且经过编译以后生成的代码少。5. 位运算符: c++提供了6个位运算符:~(按位求反),&(按位与),|(按位或),^(按位异或),《《(左移位),》》(右移位),其中按位求反是单目运算符,其余都是双目运算符。 位运算符是对其操作数按二进制形式逐位进行运算,参与运算的操作数都应为整型数,不能是实型数。(1)~(按位求反):其作用是对一个二进制数的每一位求反,即0→1,1→0.(2)&(按位求反):其作用是对两个操作数对应的每一位分别进行逻辑与操作。两操作数对应位都是1,则该位运算结果为1,否则该位运算结果为0.(3)|(按位或):其作用是对两个操作数对应的每一位非别进行逻辑或操作。两操作数对应位中有1位是1,则该位运算结果为1,否则该位运算结果为0.(4)^(按位异或):其作用是对两个操作数对应的每一位分别进行逻辑异或操作。两操作数对应位的值不同,则该位运算结果为1,否则该位运算结果为0.(5)》》(右移位):将左操作数的各二进制位右移,右移位数由右操作数给出。右移1位相当于将操作数除以2。例如,表达式8《《1的结果为4.(6)《《(左移位):将左操作数的各二进制位左移,左移位数由右操作数给出。左移1位相当于将操作数乘以2.例如,表达式2《《1的结果为4. 注意:移位运算的结果就是位运算表达式的值,参与运算的两个操作数的值并没有发生变化。6. 条件运算符: 条件运算符“?:”是c++中位移的一个三目运算符,其使用的一般形式为: 表达式?表达式2:表达式3 该表达式执行时,先计算表达式1,若其值为真,则表达式2的值为条件表达式的值;否则表达式3的值为条件表达式的值。条件运算符的优先级低于算术运算符,关系运算符和逻辑运算符,高于赋值运算符,结合性“从右到左”。7.逗号运算符: 由逗号运算符构成的表达式称为逗号表达式,其一般形式为: 表达式1,表达式2。。。,表达式n 逗号表达式的执行规则是从左到右逐个表达式执行,最后一个表达式的值是该逗号表达式的值。 注意:逗号运算符的优先级最低。忽忽。。。。累死了,整理了好久

c++中的各种符号是什么意思

C语言中六种位运算符:

&按位与

|按位或

^按位异或

~取反

《《左移

》》右移

扩展资料

运算符的使用

判断int型变量a是奇数还是偶数a&1=0偶数a&1=1奇数

取int型变量a的第k位(k=0,1,2……sizeof(int)),即a》》k&1

将int型变量a的第k位清0,即a=a&~(1《《k)

将int型变量a的第k位置1,即a=a|(1《《k)

int型变量循环左移k次,即a=a《《k|a》》16-k(设sizeof(int)=16)

int型变量a循环右移k次,即a=a》》k|a《《16-k(设sizeof(int)=16)

c++中逗号(运算符)的作用

1、会执行。
2、逗号的作用表示分隔,即分开计算各个分开的表达式。一般有三种应用:1是定义变量;2是定义函数的参数;3是多个表达式的运算。