什么!运算符的意思是如果放在变量前面?
What does a ! operator mean if put in front of a variable?
我只有一个简单的问题,我正在学习 C 编程并且我知道 !运算符表示逻辑非。我的问题是,在这种情况下,以 do while 循环作为条件意味着什么?
它是否以某种方式检查变量是否已更改?
我知道我可能应该以某种方式找到它,但是当我尝试 google '!' 时,它不想显示我的意思。
#include <stdio.h>
int main() {
int input, ok=0;
do {
scanf("%d", &input);
if ( /* condition */) {
//the input is wrong it will scan another one
}
else {
//the input is correct, so the while cycle can stop
//we don't need more inputs
ok = 1;
}
} while (!ok);
//...
//...
//...
return 0;
}
在逻辑运算的上下文中,除零 (*) 之外的任何内容都是 true
,零是 false
。
所以!1
是“!真”是false
!0
是 "!false" 是 true
(*) 任何类型的零:NULL
算作零,0.0
算作零
笼统地说,给定的代码重复执行循环的内容"while NOT ok",意思是"while OK is zero"。在else
块中,ok
设置为1,表示循环不再重复。
更正式地说,!ok
是一个表达式,当 ok
等于零时为真,而当 ok
为非零的任何值时为假。
想想看,ok是个布尔值,初始化的时候是false
(在c中,0有一个假值,我假设你知道这一点。)
在do while中,只是对逻辑值求反,还是NOT的意思。如果条件为真,它将循环,否则,不会。
如果 ok 有一个假值,你将否定它,它将有一个真值,循环将,嗯循环。
我希望你能明白我的意思,它没有任何其他含义。
!ok
与 ok == 0
相同。
请记住,在 C 语言中,布尔上下文中的 任何 非零标量值表示 "true",而零表示 "false"。写 !foo
而不是 foo == 0
是一个常见的 C 习惯用法。它也适用于指针:
FILE *foo = fopen( "some_file", "r" );
if ( !foo )
{
fprintf( stderr, "could not open some_file\n" );
return EXIT_FAILURE;
}
因此,while ( x )
与while ( x != 0 )
相同,while ( !x )
与while ( x == 0 )
相同。
我只有一个简单的问题,我正在学习 C 编程并且我知道 !运算符表示逻辑非。我的问题是,在这种情况下,以 do while 循环作为条件意味着什么? 它是否以某种方式检查变量是否已更改?
我知道我可能应该以某种方式找到它,但是当我尝试 google '!' 时,它不想显示我的意思。
#include <stdio.h>
int main() {
int input, ok=0;
do {
scanf("%d", &input);
if ( /* condition */) {
//the input is wrong it will scan another one
}
else {
//the input is correct, so the while cycle can stop
//we don't need more inputs
ok = 1;
}
} while (!ok);
//...
//...
//...
return 0;
}
在逻辑运算的上下文中,除零 (*) 之外的任何内容都是 true
,零是 false
。
所以!1
是“!真”是false
!0
是 "!false" 是 true
(*) 任何类型的零:NULL
算作零,0.0
算作零
笼统地说,给定的代码重复执行循环的内容"while NOT ok",意思是"while OK is zero"。在else
块中,ok
设置为1,表示循环不再重复。
更正式地说,!ok
是一个表达式,当 ok
等于零时为真,而当 ok
为非零的任何值时为假。
想想看,ok是个布尔值,初始化的时候是false
(在c中,0有一个假值,我假设你知道这一点。)
在do while中,只是对逻辑值求反,还是NOT的意思。如果条件为真,它将循环,否则,不会。
如果 ok 有一个假值,你将否定它,它将有一个真值,循环将,嗯循环。
我希望你能明白我的意思,它没有任何其他含义。
!ok
与 ok == 0
相同。
请记住,在 C 语言中,布尔上下文中的 任何 非零标量值表示 "true",而零表示 "false"。写 !foo
而不是 foo == 0
是一个常见的 C 习惯用法。它也适用于指针:
FILE *foo = fopen( "some_file", "r" );
if ( !foo )
{
fprintf( stderr, "could not open some_file\n" );
return EXIT_FAILURE;
}
因此,while ( x )
与while ( x != 0 )
相同,while ( !x )
与while ( x == 0 )
相同。