关于循环中的!finished

看C语言的视频,其中一个关于!finished的案例看不明白,这是我自己写的简化版

#include <stdio.h>
int main() {
int finished = 0;
do{
printf("0\n"); // 值为0
if(!finished) { // ??
printf("1\n");
}
finished = 2; // 值改为2
printf("%d\n", finished);
} while(!finished); // 结束循环
}

如果不改值,会循环输出010101……

按我的理解,原本的值是0,!finished就是非0的意思,为什么会在 if 语句中输出呢?

int finished = 0;
if(!finished)
while(!finished)
0为假,不执行,如果要执行就得加入!
判断之分真和假,不分数字大小的。0就是为假

if(!finished) { // ??
printf("1\n");
}

这里的输出因为不带任何变量,更多的作用在于输入1这个值,逻辑结构就是!finished非0就输出1

望采纳

!是一个单独的运算符,finished为true,!finished就是false,开发中,0为false,其他的值都是true

finished就是非0的意思是真,然后就会在if里面输出结果1