"i=!a" 在c语言中什么意思
c语言中''i=!a''的意思是将a取非的值赋值给i。
!作为单目运算符的意思是取非,如!真=假,!假=真。C语言中一般情况下0表示假,非0表示真。
另外值得注意的是=,==和!=的区别,=是赋值运算符,即把=右侧表达式的值赋值给左侧的变量;==是逻辑等于运算符,当两侧的表达式的值相等时返回真,否则返回假;!=是逻辑不等于运算符,当两则表达式的值不相等时返回真,否则返回假。
扩展资料
C语言运算符号的种类:
1、算术运算符:
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符:
用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符:
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4、位操作运算符:
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符:
用于赋值运算。分为简单赋值(=)、复合算术赋值(+=、-=、*=、/=、%=)和复合位运算赋值(&=、|=、^=、>>=、<<=)三类共十一种。
6、条件运算符:
这是一个三目运算符,用于条件求值(?:)。
7、逗号运算符:
用于把若干表达式组合成一个表达式(,)。
8、指针运算符:
用于取内容(*)和取地址(&)二种运算。
9、求字节数运算符:
用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符
有括号()、下标[]、成员(→,.)等几种。
参考资料来源:百度百科:c语言运算符号
!作为单目运算符的意思是取非,如!真=假,!假=真。C语言中一般情况下0表示假,非0表示真。
另外值得注意的是=,==和!=的区别,=是赋值运算符,即把=右侧表达式的值赋值给左侧的变量;==是逻辑等于运算符,当两侧的表达式的值相等时返回真,否则返回假;!=是逻辑不等于运算符,当两则表达式的值不相等时返回真,否则返回假。
那么就可以解释这个 i = !a 表达式了:对 i 赋值,其值为!a。
!a是不是代表a是假的
!a 不是代表a是假的,是对a做逻辑非处理,a如果是0,那 !a 就是1,a如果是非0值,那 !a就是0。
{
int i;
int a = 0;
i=!a;
printf("%d ",i);
a = 6;
i = !a;
printf("%d\n",i);
return 0;
}
gcc编译后结果为 1 0
可见先将a看做bool类型进行!(逻辑非)运算,结果为真(1)或假(0)