C语言 高级语言程序设计

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:17:53
麻烦懂得人进来帮我解一下下面2道题,谢谢了!!!

第一道题:设inta=2,b=4,c=1,d;执行d=!(a-b+c);后d的值是_______

我算的是1,可答案上是0,不知道我哪里算错了,还是答案有问题,
如果有人算的是0,一定要说明下原因,谢谢了!!

第二道题:若有数组a[5]={97,99,107,"\0",108},(a-z是ASCⅡ值是97—122)则执行语句Puts(a)的结果是______
答案上是ack,就是说a=97,c=99,k=107,那么输出时为什么不带后面的\0和108呢,知道的人解释一下!!!!
楼下的意思是 ,-1为非0,那么就死真值了,所以取反是假,答案就是0了,是这样吗???

1.0
因为(a-b+c)的结果是-1,而对它做了取反操作,是逻辑运算,逻辑运算只有真和假,一般真为非零数,假为零,因为-1是非零,所以取反就是假,即为0.
2.在C语言中,字符串都以‘\0’为结尾标志,即,如果要输出字符串,只有当遇到‘\0’时,认为该字符串到了结尾,输出时,只输出结尾符前面的字符,不输出‘\0’,所以 结果就是你所看到的了。

!-1为非真,即是假,所以答案是0;
第二题就如楼下的那位说的
2.在C语言中,字符串都以‘\0’为结尾标志,即,如果要输出字符串,只有当遇到‘\0’时,认为该字符串到了结尾,输出时,只输出结尾符前面的字符,不输出‘\0’,所以 结果就是你所看到的了。

a-b+c=-1,在这儿条件对-1取反,进行了逻辑运算,答案是0,通俗的说只要对一个非零数字进行逻辑运算,就是对这个数取反,其结果是0
第二道题答案就是那位回答者说的,是对的