!x在c语言语句里面为一个运算,取非,也就是反意的意思,默认所有非0数为真,0为假,也就是说如果前提x为一个非0数,!x的结果就是0,如果x是0,结果就为1(默认值非0为1),而x!=0本身是一个判断语句,如果x本身是0,x!=0不成立,则这个式子值为0表示式子不成立,x等于任意非0数则x!=0成立,式子值为1,!x在括号里面作为判断条件等价于x==0
参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。例如:
0 为假,非运算的结果为真,也就是 1。
5>0 的结果是1,为真,非运算的结果为假,也就是 0。输出逻辑运算的结果:
"x!" -- 字符串 内容是 x!// x! -- 注解行/* x! */ -- 注解行 条件:if ( x!= 0) printf("x not equ zero \n"); else printf("x == zero \n");如果 x 不等于 0 则打印 x not equ zero, 否则 打印 x == zero!= 组合在一起是逻辑运算符“不等于” !x -- 这个表示 对 x 作 “非”运算。
表示形式为expr1!=expr2。即当expr1和expr2值不相等时,结果为1(真),否则为0(假)。不等于是C语言中的逻辑运算符,其符号为!=,由两个字符叹号和等于号组成,中间不能有空格。
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。
在C语言中,~x代表的意思是按位取反的意思。
~x也就是value的二进制表示的数值,按位取反,1取反就是0,0取反就是1,例如1011010取反后就是0100101。
其实~i,就是找到一个数x使x+i=-1。因此也就能理解为什么 ~(-1)=0,~(0)=-1了。
原码为正数,内存中的补码也为正数,按位取反后内存中的补码变为负数,当内存中的补码转化成原码时,原码等于=补码除符号位外逐位取反,并在最低位+1。
原码为负数,内存中的补码为原码的除符号位外逐位取反,并在最低位+1,按位取反后内存中的补码变为正数,当内存中的补码转化成原码时,原码=补码。