c语言中"!"的作用是什么?

   更新日期:2024.05.27

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 语言中布尔值的真值和假值。



  • 15175486828 :c语言中++是什么?
    符果若4500 :答:C语言中“++”是自加的意思。1、自加,有两种用法:假如定义了一个变量i=1 (1)若使用i++, 指代先取i的值再另i=i+1 (2)若使用++i,指代先使i=i+1再取i的值 2、C语言中的运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符...
  • 15175486828 :C语言中除号用什么表示?
    符果若4500 :答:C语言中乘号用“*”表示。同时按住【Shift + 8】可打出“*”。C语言中除号用“/”表示(shift键旁边,需英文状态下才能打出),求余用“%”表示(同时按住【Shift + 5】可打出)。
  • 15175486828 :c语言中% c和% d的区别是什么
    符果若4500 :答:C语言输出时的%d和%c等都是格式化字符串的约定,%d表示整型格式, %c表示字符型格式。常用输出格式类型:%hd,十进制有符号短整型 d,十进制有符号整型 ld,十进制有符号长整型 hu,十进制无符号短整型 u,十进制无符号整型 lu,十进制无符号长整型 c,字符型 s,字符串型 f,十进制浮点型 lf,...
  • 15175486828 :c语言中的语句有哪几类
    符果若4500 :答:// 该语句表示:如果a>b条件成立,则max取a的值,否则max的值是b。在a>b条件的控制下,出现两个可能的分支流程。而switch语句能实现多个分支流程。 do while语句,while语句,for语句转向语句 2,循环语句有for、while和do_while三种。当循环语句的循环控制条件为真时,反复执行指定操作,是C语言中专...
  • 15175486828 :c语言中char是什么意思
    符果若4500 :答:在C语言中“char”是可容纳单个字符的一种基本数据类型,即char是字符变量的说明符。字符变量的取值是字符常量,即单个字符。字符变量类型说明的格式和书写规则都与整型变量相同。在C/C++中,对程序员所要输入的变量要给予其类型,主要的的数据类型分为两种,一种是数字类型,一种是字符类型,而“char”...
  • 15175486828 :C语言中%是什么意思
    符果若4500 :答:选择D。是求余运算符,也叫模除运算符,用于求余数。%要求两个操作数均为整数(或可以隐式转换成整数的类型)。标准规定:1、如果%左边的操作数为负数时,则模除的结果为负数或者0,2、如果%左边的操作数为正数时,则模除的结构为正数或者0。
  • 15175486828 :C语言中/与%的区别
    符果若4500 :答:作为运算符是用来取余的,/是除法运算。例如:除法运算式 65 ÷8 = 8余1 那么 65 / 8 = 8 65 %8 = 1
  • 15175486828 :c语言中如何输入整数
    符果若4500 :答:根据需要一般选择如下3种方法:1,已知数量,且个数较少:scanf("%d%d%d",&a&b&c);2,已知数量,但数量较多:for(int i=0;i<n;i++)scanf("%d",&a[i]);3,不知道数量 int i=0;while(scanf("%d",&a[i])){ i++;}
  • 15175486828 :C语言中->是什么意思啊?
    符果若4500 :答:->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.举个例子:struct Data { int a,b,c;}; /*定义结构体*/ struct Data *...
  • 15175486828 :c语言中%o是什么意思?
    符果若4500 :答:o意思是以八进制整型式输出整数。C语言中对于不同类型的数据用不同的格式字符。x格式符,以十六进制数形式输出整数。u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。c格式符,用来输出一个字符。s格式符,用来输出一个字符串。
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网