c语言while是什么意思中 while(!0) 表示什么

C语言 while循环循环条件 while(k) 与while(k!=0) 等价么?
小雪氻曟wj66
while(k) 与while(k!=0)是效果上是等价的.但是编译器背后执行的动作不同:while(k)编译器判断 k 是否是 0 值,非零就执行循环体.while(k!=0)编译器对 k!=0 这个表达式求值,结果如果为 true 就执行循环.
为您推荐:
其他类似问题
扫描下载二维码c语言中while(t)是啥意思_百度知道
c语言中while(t)是啥意思
=0 )t值为0时while(t)相当于while( t,条件为真while( t )是while( t!=0 )的简便写法,条件为假t值不为0时
来自团队:
其他类似问题
为您推荐:
其他4条回答
t是判断条件,或者
可以是其他判断语句,满足ture时执行循环,循环会持续执行,当t为真或非0的话,执行循环,t=0则退出循环,否则退出循环,比如t=1while()是循环语句
中需要看t所代表的值
只要t不等于0(t!=0),则执行循环中的内容
意思是只要t的值不为0就执行while循环体。
这个t表示个什么值呢
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言中while(!x)的!x是什么意思_百度知道
c语言中while(!x)的!x是什么意思
提问者采纳
x&quot!&;为真;是“非”的意思,当“,也就是”x==0&quot&quot
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
为您推荐:
while的相关知识
其他2条回答
表示 x == 0 执行
对x作非运算,x为假,则!x为真;x为真,则!x为假。
x=1。。然后呢
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
while("\0")为什么会跳出
以下的while为什么又会跳出呢,因为以前是写PHP的不太理解,赋值不是一直会为真的吗?
请输入代码/* strcpy: 将 t 复制到s;指针版 3 */
void strcpy(char *s, char *t)
while (*s++ = *t++)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个while判断的是*s++ = *t++表达式的值
对,没错,C语言里的表达式也是有值的,比如逗号表达式的值1, 2, 3的值等于最右边数的值即3
这个赋值表达式的值也是等于赋值完后的左值即*s++,也即当前*s的值
所以当t到达末尾的时候会读到字符串结尾的0,即*t为0,被赋值的*s也是0,while里面是个0自然会跳出循环
另外'\0'的值为0,所以while('\0')会跳出循环
另外while("\0")不会跳出循环,因为字符串常量的值实际山是它的地址,字符串常量的地址都不会是0
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
while("\0")
这条语句判断的是"\0"的值,在C里面也就是"\0"的地址,这个条件会造成死循环,除非"\0"的地址为0,在MINGW32环境下测试如此
while (*s++ = *t++);
这条语句判断的是赋值表达式的返回值,C里面赋值表达式返回的是左操作数的值,t和s是正确的字符串的情况下,最后一步会有 *s = '\0';发生,这时候ASCII '\0' 的值为0,循环退出
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
'\0' 是 char0 是 int
char 和 int 的差異只是對你而言,在內存當中都是 int。
在內存當中,'\0' 就是 0。
0 就是布爾邏輯中的 FALSE。
所以 while ('\0') 相當於 while (false)
另外,別忘了 PHP 中的賦值是左結合,居然是左結合,a = b = c 居然相當於 (a = b) = c 。。。
還有誰告訴你賦值一定爲真。。。
就連 PHP 都是可以 if (a = (b = (c = 0))) // never execute
賦值表達式的結果,取決於 right-hand side expression 的結果。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
'\0'是字符串结束的标志,因为ASCII码值为0,一般编译器会定义NULL的值为0,字符的运算其实是操作的ascii值,当读取到'\0'的时候,返回的ascii是0,表示到了字符串的结尾,其他的任何字符常量的ASCII码值都是大于0的,返回的是一个大于0的数字,c语言里的字符串是由字符组成的,字符都有ascII值,我们看到的字符和数字都是ascii值格式化输出的结果,当然,不是所有字符都是可见的,'\0'就是一个不可见的字符常量。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
题主你是想问while('\0')为什么会跳出循环吧?
因为'\0'的ASCII码等于0啊。 就相对于while(0),条件为假当然跳出循环咯。
void Strcpy(char s, char *t)
while (s++ = t++)
这个函数中,当循环到t == '\0'时,赋值给s,同时判断s等于0,跳出循环。
while (s++ = *t++) ; 其实可以等价于while(((s++)=*(t++))!='\0');
我也是新手。。勿喷
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
C中,赋值语句的值,为赋值符号(=)左边的值;
不是一直为真的。
同步到新浪微博
分享到微博?
与我们一起探索更多的未知
专业的开发者技术社区,为用户提供多样化的线上知识交流,丰富的线下活动及给力的工作机会
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要举报该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知

我要回帖

更多关于 c语言while 的文章

 

随机推荐