C语言问题详解

对于while(0)进行到这一步还要继续循环吗?对于while(‘0’)进行到这一步还要继续循环吗?对于while(‘\0’)进行到这一步还要继续循环吗?对于while(\0)进行到这一步还要继续循环吗?有何区别呢?举个例子,如while(*p++);到什么时候结束呢?

关于while语句:
while(条件),当条件值为1时,则进入while语句执行;当条件值为0,则不执行。
这个条件可以是int型的数值,可以是字符,但是注意char型的字符一般可以换算成ascii码,然后对应的有相应的int数值,所以一般‘?’,这种asci表示都可以看做1;条件还可以是表达式判断,这个就不多说了,可以好好看看表达式的应用。

while(0) 肯定就不需要循环
while('0') '0'对应的ascii十进制值肯定不是0,所以需要循环
while(‘\0’) 这个判断可以参见上一条,需要循环
while(\0) 这个属于数学判断,非0就是1呗,所以需要循环。

while(*p++) 这种判断条件,则p应该是个指针,而且是一个指向数组的指针
所以,p所指向的下一个数组元素中的值为0或者为空(null)时,则不需要循环
指针*p++的含义容易弄混。追问

第四个怎么是非0呢

追答

\0是C++中字符串的结尾标志,存储在字符串的结尾。\0属于char型,占一个字节,所以while(\0) 这个判断条件本身就是错误的。我以为可以看做非0来理解,但是如果不加引号,在c++中,会提示\0是个非法的转义序列。
嘿嘿,上机是最好的解决方式。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-11
第一个不需要,第二个需要,第三个需要,第四个需要
*p++值是0的时候结束循环
第2个回答  2011-08-11
: szdxl 你好,你可能不小心看错了吧。
while()是判断()里面表达式的值,注意是值
while(0) 肯定就不需要循环
while('0') '0'对应的ascii十进制值肯定不是0,所以需要循环
while(‘\0’) 这个里面‘\0' 就是ascii码值为0 ,注意是值阿,那它不就是0了么,又不是字符'0'当然不循环拉,
while(\0) 这个我编译都没过带\号的只有在"" 和' '之间才表示转意字符而且后面的数字是表示八进制的,如‘\36'这个36就是八进制的036.建议楼主去看一下书上的.
PS:VC6.0编译的

C语言编程常见十大面试问题(内附答案)
C语言编程面试中常遇到的十大问题,下面就逐一解答:1. 变量\/函数声明与定义的区别:变量\/函数声明告知程序它们的存在,如类型和参数信息,但不分配内存。定义则同时包含声明并为变量分配内存,定义是声明的扩展或细化操作。2. C中的存储类说明符:主要有auto、register、static和extern,它们分别定义了变量...

汉诺塔问题详解(C语言)
汉诺塔问题详解(C语言)汉诺塔问题是一个著名的数学问题,本文将通过C语言解决汉诺塔问题。首先,我们需要了解汉诺塔游戏的规则。在游戏开始时,3根杆子上放置有若干个大小不一的盘子,盘子按照从大到小的顺序排列。游戏的目标是将所有盘子从第一根杆子移动到第三根杆子,同时保持盘子的排列顺序不变。在移动...

c语言常见问题有哪些
1、书写标识符时,忽略了大小写字母的区别。2、忽略了变量的类型,进行了不合法的运算。3、将字符常量与字符串常量混淆。4、忽略了等号与双等号的区别。5、忘记加分号。6、输入变量时忘记加地址运算符。7、输入数据的方式与要求不符。8、输入字符的格式与要求不一致。9、输入输出的数据类型与所用格式...

c语言的几个问题
1:字母只读一个,而数字可以很多个一起读。(我汗,以前都没注意着,C的题目越出越细了)2.空格也是字母的一种如果是10 20 AB,那么10 20 读的没错,但c1=‘_’,c2='A'。先读空格(补充下1的回答)3:那个逗号有,你输数据的时候也要相应的有逗号,D里z是double型,应该用%lf;4:长度...

...性问题,我很难理解。希望C理解的深的给我详细解释解释。Thank you...
2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。3.由取下标运算的含义:x[j]实际上是*(x+j),即先找地址后进行间接运算。而x是a+i,代进去就得到*(a+i+j)...

求c语言一些常见问题,
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5....

关于2级C语言的几个问题(详细解答一下,谢谢!)
(1)选A char x='A'; 是定义一个变量x并赋值为字符A x=(x>'A'&&x<='Z')?(x+32):x; 这是个选择语句,括号里的x>'A'&&x<='Z'表示条件,意思就是在A到Z之间的字母,也就是所有大写字母,因为是 >'A'不是>=‘A',所以不包括A,当条件满足时就执行x=x+32,大写字母 +32就...

c语言基础问题,求解释!
这涉及到C语言的一些规定 第一就是自动向上转换: 也就是说 占用空间少的类型和占用空间多的类型运算,运算结果转换为占用空间多的类型 (这是为了防止运算结果放在少空间发生溢出)int 占用4个字节 double 占用8个字节 运算结果 为double类型(这是因为最后加的X为double 类型的)如果x是int 类型的...

c语言面试经常问到的问题有哪些?
c语言面试经常问到的问题有:1、C语言的主要特征是什么?C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。2、i ++和++i有什么区别?1)表达式“i ++”返回旧值,然后递增i。表达式++i递增该值...

发现了一个有趣的c语言问题,请各位大神帮忙解释一下。
1.之所以再次编译值不改变,乃是因为系统在加载可执行镜像时所选取的栈的初始地址是相对固定的,a就在这个栈上,而且程序开始到main函数执行,这是一段按部就班的例程,没有什么变数,所以a的地址不变是可以理解的。2.scanf("%d",20000)这句合法并没有什么难以理解的地方,因为指针归根到底也只是一...

相似回答
大家正在搜