C语言中 int k==0; do{++k;} while(k>=0); 为何不是死循环?
作者&投稿:函夜 (若有异议请与网页底部的电邮联系)
不是,当k溢出的时候会变成负值,他就会停止循环了
是的 必死啊
int 类型有个范围,加到最大值以后会变成负值该语句不是死循环的原因是int型是一个能表达有符号数的数据类型,且表达的数据有一个范围,当值达到其所能表达的值的上限的时候,会发生溢出现象,从而使该变量的值变为一个负数,从而不满足循环条件而跳出了循环。
常用的单片机编译器,如KEIL下,51类单片机的C语言中,int代表2个字节(16位);如果是32位RAM处理器的C语言中,则int代表4个字节(32位)。
注意:do-while结构语句中do中的语句至少执行一次。
你定义变量用俩=?
袁幸雅皓: A:while(1)C语言中1代表结果为真,虽然while里面有break,但是i=i%100+1使i不可能为100,所以死循环,C:K=0,但是do语句中是先运行一次循环内容再进行判断,所以死循环.D:for(;;)for语句中第一个分号后面的是判断退出条件,这点与while不同,如果while里面没有东西会报错的,for语句如果没有就是没有停止条件,不会停止,所以死循环希望能帮助到你
蠡县19338942680: 为什么c语言程序 int k=0;while(k=1) k++; 为什么k=1总为真 - ?
袁幸雅皓: 因为在C语言中,=是赋值语句,==才是等号,而赋值语句的结果是赋值号右边的值,即语句x=1的值是1,是真.
蠡县19338942680: C语言中:int k=0;while (k=1)k++;while循环的次数是什么?为什么 - ?
袁幸雅皓: int k=0; while(k=1) k++; (k=1)是用来判断的条件它的返回值只有真和假,而k=1赋值语句的所回值为真,所以while循环条件一直为真,是个死循环,次数无限!
蠡县19338942680: 用C语言编写程序,求出1000的阶乘.(利用数组) - ?
袁幸雅皓: 基本思路采用累乘的方法,乘法笔算的思路,数组记录下所有乘积的位,我写了个具体如下:#include <stdio.h> int xcfun(int x[],int d[],int ws[],int j,int jw,int len)//模拟笔算乘法,逐位相乘 { int k=0; do { x[k+j]=(ws[j]*d[k]+jw)%10; jw=(ws[j]*d[k]+jw)/...
蠡县19338942680: c语言 char *s="121"; int k=0,a=0,b=0; - ?
袁幸雅皓: k=2 a=3 b=2 第一遍循环:k=1,执行b=b+s[k]-'0'; a=a+s[k]-'0';所以b=0+'2'-'0',所以b=2;a=0+'2'-'0'=2 第二遍循环:k=2,执行a=a+s[k]-'0'=2+'1'-'0'=3;然后执行continue,则应为s[3]=0,所以终止循环.执行printf("k=%d\n",k);printf("a=%d b=%d\n",a,b);所以 k=2 a=3 b=2
蠡县19338942680: 1 在计算机二级c语言中 int k=0 ; k++; if (k%2==0) . 括号中的k - ?
袁幸雅皓: int k=0 ; 初始化 k=0 k++; k 自增1,变 1 if (k%2==0) 这时的 k 值 等于 1.k%2 是 除以2求余数, 1%2 余数是1 所以条件k%2==0 为假.
蠡县19338942680: int k=0;while(k=1)k++中while(k=1) 是先判断k是否等于0,还是先赋值K=1? - ?
袁幸雅皓: int k=0;while(k=1)k++;中,先赋值,在判断赋值表达式的值是否是0(注意不是判断k是否为0).这个循环是个死循环.