c语言以下程序执行后sum的值是

来源:百度知道 编辑:UC知道 时间:2024/04/28 08:54:57
26
以下程序执行后sum的值是:不确定,为什么
main() (int i, sum; for(i=1;i<6;i++) sum+=1;printf("%d\n" ,sum);}

27有以下程序段 int x=3
do { printf("%d" ,x-=2); }while (!(--x));其输出结果是 1 -2为什么

28若变量c为char类型,能正确判断出c为小写字母的表达式是
'a'<=c<= 'z'
(c>= 'a')||(c<= 'z')
( 'a' <=c)and ( 'z' >=c)
(c>= 'a' )&&(c<= 'z' )

第一个:是因为sum没有初始化,系统会给它一个随机值。所以不确定。。。
第二个:(x++)这个式子是x加1之前的值,(--x)这个式子 是x加1之后的值。你的程序执行完do后x=1;
那(--x)是0,那while判断(!(--x))是真(这时x等于0),所以继续执行,下一次x=-2,输出-2。while判断为假,所以终止循环。。
第三个:(c>= 'a' )&&(c<= 'z' )是正确的。
'a'<=c<= 'z'这个在数学里是这么表示的但是计算机里这么是错的,那我来给你分析一下:‘a’<=c这个不管c是什么值,a’<=c这个式子只有两个值:0,1;即真和假,那0或1<='z'永远都是真。所以这个是个定值,就是真(1);这会应该明白机器和人是不一样的。哈哈。。。。希望明白了。那两个式子比较简单,你自己就能明白了。。还有疑问请QQ我115088917,我们在探讨。。

26.
A:sum没有赋初值,而局部变量不会自动给你赋初值为0,而是内存中是什么值,初值就是什么,所以结果会不确定。

27.do{}while循环是先执行do{}中的,然后再执行while。所以第一步执行do中的printf,得1。然后x=1;
--x=0;!(--x)为true,继续执行。第二步printf得-2,
此时while中!(--x)为!(-3)为0,即false,停止执行。结果为打印出1,-2.

28.应该是(c>= 'a' )&&(c<= 'z' )
C中没有下面这两个表达式:
'a'<=c<= 'z'
( 'a' <=c)and ( 'z' >=c)

而(c>= 'a')||(c<= 'z') 不能判断,如果c是大写字母,这个也是true。

26.sum=0+1+2+3+4+5=15,初始默认