C语言 while(!x);是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 while(!x);是啥意思?相关的知识,希望对你有一定的参考价值。

C语言 while(!x);是什么意思?
main()
int x=3;
do
printf("%d",x--);

while(!x);


问下这题 输出结果是 3 我 怎么算出来是 3 2 1?
是不是 while(!x)和 do while(!x)的 意思是不一样的 ?求教!

while(!x)后面有一个分号,表示该循环的循环体为空,即只做判断和循环,并不执行操作。

!是反运算符,单目,!真 即 假,!假 即 真。
如果x != 0, 则 !x 为 0,即假,如果x == 0,则 !x 为 真。

while()是循环语句。
while(expr)表示当逻辑表达式expr为真时,循环运行循环体,直到expr值为假或遇到break语句时退出。

!x是逻辑非操作,当x为0时,值为真,否则值为假。 在这里等效于x==0。

扩展资料:

1、c语言语法结构

for循环

for循环结构是c语言中最具有特色的循环语句,使用最为灵活方便,它的一般形式为:

for(表达式1;表达式2;表达式3)循环体语句 。(其中;不能省略)

表达式

表达式1为初值表达式,用于在循环开始前为循环变量赋初值。

表达式2是循环控制逻辑表达式,它控制循环执行的条件,决定循环的次数。

表达式3为循环控制变量修改表达式,它使for循环趋向结束。

循环体语句是在循环控制条件成立的情况下被反复执行的语句。

但是在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次都不执行。

先执行表达式2,然后执行循环结构,最后表达式3,一直这样循环下去。

for循环语句是c语言种功能最为强大的语句,甚至在一定程度上可以代替其他的循环语句。

do

do循环结构,do 1 while⑵;的执行顺序是1->2->1...循环,2为循环条件。

while

while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件

以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

2、c语言特点

高级语言。它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。 

结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 

代码级别的跨平台。由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。

使用指针。可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。 

参考链接:c语言_百度百科
参考技术A while()是循环语句。
while(expr)表示当逻辑表达式expr为真时,循环运行循环体,直到expr值为假或遇到break语句时退出。

!x是逻辑非操作,当x为0时,值为真,否则值为假。 在这里等效于x==0。
在while(!x)后面有一个分号,表示该循环的循环体为空,即只做判断和循环,并不执行操作。
于是这句的意思就是,如果x为0,则一直循环下去,不做操作,否则继续执行。
如果没有其它线程来改变x的值,那么这里就是一个死循环了。
参考技术B !是反运算符,单目,!真 即 假,!假 即 真。
如果x != 0, 则 !x 为 0,即假,如果x == 0,则 !x 为 真。
while循环和 do-while 循环的区别在于,while是先检查是否复合条件再循环,而do-while循环则是在循环体尾检查是否符合条件,这就说明,do-while循环内的语句至少被执行一次。
这好比下面的例子
do
吃一个三明治 ←←←←← Statement;
我饿吗?(饿,再吃一个三明治↑)(不饿,退出循环↓) while();
←←←←←←←←←
这就意味着,你至少得吃一个三明治。
如果使用while循环,则像下面这样

我饿吗?(饿,吃↓)(不饿↓) while()
吃一个三明治 ← ↓ statement;


这说明,你不一定吃一个三明治。
这就是while跟do-while的区别。。。=、=本回答被提问者采纳
参考技术C 这个程序等价于
void main()
int x=3;
do
printf("%d",x--);

while(x==0);//关键在这句的理解


而不是你认为的: !x <=> x!=0
参考技术D main()

int x=3;
do

// 此处输出 3,且x的值为2;
printf("%d",x--);


// !x (!2 = 0)说以退出循环
while(!x);

c语言define用法是啥

参考技术A

是定义的意思,将一个变量强制定义为你想要的值。如#define PI 3.14就是将PI的值定义成3.14,这样在程序里看到PI就可以替换成3.14了。

在程序执行期间其值可以改变的量称为变量,变量类型又分为系统变量和用户自定义变量。

define可以像函数那样接受一些参数:#define max(x,y) (x)>(y)?(x):(y);

这个定义就将返回两个数中较大的那个,因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用而已。

C语言中无参宏定义的一般形式为:

#define 宏名 字符串 

其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令,“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

例如:#define M (a+b) 它的作用是指定标识符M来代替表达式(a+b)。在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。

以上内容参考:百度百科-define

以上是关于C语言 while(!x);是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

下面代码的C语言中while(x--)是啥意思

c语言中,while(1)是啥意思?

请问Java中. while(!x)是啥意思?x是布尔值

C语言这三个if括号里是啥意思

c语言define用法是啥

c语言define用法是啥?