!a的运算规则为:
1 a如果为0,结果为1;
2 a如果不为0,结果为0。
于是i=!i的作用就是,如果i非0,则i值赋值为0,否则i值赋值为1.
i=!i与i=(i==0)效果相同。
c语言中''i=!a''的意思是将a取非的值赋值给i。
!作为单目运算符的意思是取非,如!真=假,!假=真。C语言中一般情况下0表示假,非0表示真。
另外值得注意的是=,==和!=的区别,=是赋值运算符,即把=右侧表达式的值赋值给左侧的变量;==是逻辑等于运算符,当两侧的表达式的值相等时返回真,否则返回假;!=是逻辑不等于运算符,当两则表达式的值不相等时返回真,否则返回假。
扩展资料
C语言运算符号的种类:
1、算术运算符:
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符:
用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符:
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4、位操作运算符:
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符:
用于赋值运算。分为简单赋值(=)、复合算术赋值(+=、-=、*=、/=、%=)和复合位运算赋值(&=、|=、^=、>>=、<<=)三类共十一种。
6、条件运算符:
这是一个三目运算符,用于条件求值(?:)。
7、逗号运算符:
用于把若干表达式组合成一个表达式(,)。
8、指针运算符:
用于取内容(*)和取地址(&)二种运算。
9、求字节数运算符:
用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符
有括号()、下标[]、成员(→,.)等几种。
参考资料来源:百度百科:c语言运算符号
楼主只要弄清楚:运算符的分类就一切OK了。标准C里的运算符大致分为:数值运算符、比较运算符、位运算符。
== 就属于比较运算符,顾名思义,是要比较==两边的数值是否相等。
如:i==0 意思就是i的值是不是等于0,等的话就为TRUE在C中用1表示相等,不等则为FALSE在C 中用0表示。