c语言中,!(--x)什么意思?

Python010

c语言中,!(--x)什么意思?,第1张

C语言运算符,括号里面(---x)表示x的值减去1,相当于“x”变为“x-1”,括号外面“!”表示取反(非0数变为0,0变为1)。

除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。

扩展资料

优先级,C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。

而自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

另外在C语言里,没有前置后置之分,因为++ -- 是右结合所以右侧优先运算,表现为 "操作数后置优先级比较高" 的假象,前置和后置的区分是因为运算符重载而后加入C++的

接下来是算术运算符,*、/、%的优先级当然比+、-高了。

参考资料来源:百度百科-C语言运算符

C语言中x++和++x的区别如下:

1、自增的顺序不同

x++表示x自增1后再参与其它运算。

++x是x参与运算后,x的值再自增1

2、自增类型不同

x++属于后置自增运算。

++x属于前置自增运算。扩展资料

前置后置区别的`举例

1、a = i++相当于 a = ii++

2、a = ++i相当于 i++a = i

3、int c

int d = 10 // 测试自增、自减

c = ++d // ++d 是先对 d 的值加 1,再使用 d 的值执行该行命令

int e = 10 // 测试自增、自减

c = e++ // e++ 是先使用 e 的值执行该行命令,执行完后再对 e 的值加 1

- - 单目 自减运算符,- -x 表示先将x的值减1,然后再代入下一个C语言语句中,!在C语言中表示逻辑非,“!i“表示i的反,即:若i为真则”!i“为假 反之i为假,”!i“为真,所以- -x !应该表示为(- -x )!,先自减,然后再逻辑非,