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

2024年11月20日 15:30
有5个网友回答
网友(1):

第一个:是因为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,我们在探讨。。

网友(2):

第一个:是因为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,我们在探讨。。

网友(3):

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。

网友(4):

26.sum=0+1+2+3+4+5=15,初始默认sum=0;
27.总共执行两次,第一次输出1,此时x=1,执行!(--x)==1继续执行,此时x=0,第二次输出-2 因为x=0-2=-2;
28.(c>= 'a' )&&(c<= 'z' )
第1个显然不是(C语言在两个字符之间不能这样表示)
第2个是或的关系,也不行
第3个不符合C语法

网友(5):

第一个程序,sum没有赋值;
第二个程序循环执行两次,第一次先无条件执行循环体,得x=1,后执行循环判定条件得x=0;
第二次执行循环体得x=-2:后执行循环判定条件得x=-3;
此时!(--x)=0,跳出循环.
第三个,不记得||和&&哪个是或哪个是且,所以不选第二就选第三