c语言中"!"的作用是什么?
c语言中的“!”是逻辑运算中的非运算。
“!”是C语言中的非运算符,在变量前面使用它,会构建非运算表达式,表达式的返回结果是个布尔值(也就是只有true或false)。对变量使用时,如果变量不是布尔数据类型,将会强制转化为布尔类型再使用,如整形变量123将被转化为true,整形变量0将被转化为false。
扩展资料:
C语言所有运算符列表:
1、算术运算符
用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算,包括大于(>)、小于(<)、等于(==)、 大于等于(>=)。
、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算,包括与(&&)、或(||)、非(!)三种。
4、位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
参考资料来源:百度百科-c语言运算符号
在 C 语言中,"!" 是逻辑取反运算符。它的作用是将一个布尔表达式的值取反,例如:
int a = 1;
int b = 0;
if (!a) {
// 这里的代码不会执行
}
if (!b) {
// 这里的代码会执行
}
在这个例子中,变量 a 的值为真,所以逻辑取反后的值为假,不会执行后面的代码。变量 b 的值为假,所以逻辑取反后的值为真,会执行后面的代码。
需要注意的是,在 C 语言中,布尔值的真值为 1,假值为 0。因此,当逻辑取反运算符用于非布尔值时,它会将该值转换为布尔值再进行取反。例如:
int a = 0;
int b = 1;
if (!a) {
// 这里的代码会执行
}
if (!b) {
// 这里的代码不会执行
}
在这个例子中,变量 a 的值为 0,所以在逻辑取反后的值为真,会执行后面的代码。变量 b 的值为 1,所以在逻辑取反后的值为假,不会执行后面的代码。
在使用 "!" 运算符时,需要注意以下几点:
"!" 只能用于单个表达式,不能用于整个语句或多个表达式的组合。例如,以下代码是错误的:
// 错误代码
if (!(a > b && b > c)) {
// 这里的代码不会执行
}
正确的写法应该是这样:
// 正确代码
if (!(a > b) || !(b > c)) {
// 这里的代码不会执行
}
"!" 运算符的优先级比较低,因此在使用时需要注意括号的使用。例如:
int a = 1;
int b = 0;
if (!a + b) {
// 这里的代码不会执行
}
if (!(a + b)) {
// 这里的代码会执行
}
在第一个例子中,"!" 运算符的优先级低于加法运算符,因此 "!a" 和 "b" 会先被计算,然后再对它们的和取反。由于 "!a" 的值为假,所以最终的结果也为假,不会执行后面的代码。在第二个例子中,括号的使用使得 "!" 运算符的优先级高于加法运算符,因此会先对 "a + b" 的值取反,然后再与 if 语句进行比较。由于 "a + b" 的值为 1,所以取反后的值为 0,符合 if 语句的条件,会执行后面的代码。
总之,"!" 运算符是 C 语言中常用的逻辑运算符之一,它的作用是将一个布尔表达式的值取反或将一个非布尔值转换为布尔值再进行取反。在使用 "!" 运算符时,需要注意它的优先级和括号的使用,以及 C 语言中布尔值的真值和假值。