c语言中,!(--x)什么意思? 30
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语言运算符
2024-07-18 广告
C语言运算符,括号里面(---x)表示x的值减去1,相当于“x”变为“x-1”,括号外面“!”表示取反(非0数变为0,0变为1)。
除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。
扩展资料
C语言中++*x和*++x的区别
(1)“++“跟“*”的优先级一样,如果两个同时出现,运算顺序是从右往左(不是常规的从左往右)。即“++*x”即“++(*x)”,先取x的值,然后让值自加1。(地址没变,指针指向的值变了)。
(2)“*++x”即“*(++x)”,先让x的自加1,就是x的地址加上这个指针类型的步长(比如说这个指针是int类型,那它的地址+4,以此类推),然后再取x的值。(地址变了,但是值没变)
(3)另外的,int *x,“x”代表的是指针,指针即地址,*是取值符,*x就是取指针x里存的值。
参考资料来源:百度百科-C语言运算符
在C语言中,~x代表的意思是按位取反的意思。
将x按位取反
比如x = 10101010b。
那么~x = 01010101b。
还要注意,在C语言中,还有逻辑取反符号“!”,“!x”的返回值只有0和1两种。如果x为0,则!x=1。如果x不等于0.则!x的返回值为0。
扩展资料:
c语言关键字。
signed 声明有符号类型变量
unsigned 声明无符号类型变量
struct 声明结构体变量
union 声明联合类型
enum 声明枚举类型
switch 用于开关语句
case 开关语句分支
default 开关语句中的“其他”分支
auto 声明自动变量,缺省时编译器默认为此
const 声明只读变量
static 声明静态变量
register 声明寄存器变量
!表示逻辑非
因为--在x前面所以先对x求递减,再求逻辑非。
如果x-1=0即x=1,则 !(x-1)为真,并且x=x-1
如果x-1 !=0即x!=1,则,!(x-1)为假,并且x=x-1